SQL - 如果值为真则分配相同的值如果不分配增量 1 值

SQL - asigning same value if value true if not assign increment 1 value

我有下面的 table,我想为 V1 列分配相同的值是 ACCOUNT 如果不是,则值相同我想分配 1 个增量值。 与 excel 类似的内容:=if(B2=B1,C1,C1+1).

CCR   ACCOUNT   V1    
1       100     1  
2       100  
1       101  
1       102  
2       200  
3       200  
16      200  
18      200  

谢谢!

select ccr, account, dense_rank() over (order by account) as V1
from t

对于未来的读者,这是一个更通用的解决方案(与数据库无关),因为某些(尽管非常流行)数据库方言(例如,MySQL、SQLite、MS Access)不幸的是还没有携带Window Functions 因此没有 Over() 子句:

SELECT ccr, account,
   (SELECT Count(*) 
    FROM 
      (SELECT DISTINCT account FROM tableName) As t2
       WHERE t2.account <= t1.account)  As V1
FROM tableName t1

输出:

ccr account V1
1     100   1
2     100   1
1     101   2
1     102   3
2     200   4
3     200   4
16    200   4
18    200   4