首页 > 解决方案 > ROW_Number 与自定义组

问题描述

我正在尝试row_number基于自定义分组,但我无法生成它。

以下是我的查询

CREATE TABLE mytbl (wid INT, id INT)
INSERT INTO mytbl Values(1,1),(2,1),(3,0),(4,2),(5,3)

电流输出

wid     id
1        1
2        1
3        0
4        2
5        3

询问

SELECT *, RANK() OVER(PARTITION BY wid, CASE WHEN id = 0 THEN 0 ELSE 1 END ORDER BY ID)
FROM mytbl

我想根据自定义条件对行进行排名,例如如果 ID 为 0,那么我将开始新组,直到我有非 0 ID。

预期产出

wid     id  RN
1        1  1
2        1  1
3        0  1
4        2  2
5        3  2

标签: sqlsql-serverrankpartitionrow-number

解决方案


在这里猜测,因为我们没有太多澄清,但也许是这样:

SELECT wid,
       id,
       COUNT(CASE id WHEN 0 THEN 1 END) OVER (ORDER BY wid ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) +1 AS [Rank]
FROM mytbl ;

推荐阅读