我是T-SQL
的新手。
有人可以帮我得到这个吗?
我有以下数据:
Id flg rnum
--------------
11 n 1
11 n 2
11 y 3
11 n 4
11 n 5
11 y 6
11 n 7
当下一行更改为其他标志时,我想获得同一标志的唯一行号。
所需结果:
Id flg rnum ranks
-------------------
11 n 1 1
11 n 2 1
11 y 3 2
11 n 4 3
11 n 5 3
11 y 6 4
11 n 7 5
谢谢您的帮助。
您可以将LAG() OVER ([ PARTITION BY .. ] ORDER BY...)
窗口分析功能与另一个分析功能LAG() OVER ([ PARTITION BY .. ] ORDER BY...)
一起使用:
SUM() OVER ([ PARTITION BY .. ] ORDER BY...)
WITH T2 AS
(
SELECT *, LAG(flg,1) OVER ( ORDER BY rnum ) as lg
FROM T --> your original table
)
SELECT id, flg, rnum,
SUM(CASE WHEN flg=lg THEN 0 ELSE 1 END) OVER ( ORDER BY rnum ) AS ranks
FROM T2