当下一行更改为其他标志时,是否获得同一标志的唯一行号?

问题描述 投票:3回答:2

我是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

谢谢您的帮助。

sql-server tsql row-number
2个回答
2
投票

您可以将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


0
投票
© www.soinside.com 2019 - 2024. All rights reserved.