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
我有下面的 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