我有下表,对于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
谢谢!
答案 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