SQL - 如果值为true则为asigning相同的值,如果不指定增量1值

时间:2015-08-10 15:46:03

标签: sql db2

我有下表,对于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  

谢谢!

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

对于未来的读者,这是一个更通用的解决方案(数据库无关),因为某些(尽管非常流行的)数据库方言(例如,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
相关问题