【发布时间】:2020-02-19 10:33:26
【问题描述】:
我正在尝试基于自定义分组创建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
【问题讨论】:
-
你是什么意思“直到我有相同的等级。”?不止一个
0的例子会让我们更容易理解大局。还是只是所有 prior 行 +1 上的0的数量? -
@Larnu 我已经更新了。实际上,我想根据 ID 列对行进行排名,如果出现任何 0 值,那么我必须增加它
标签: sql sql-server rank partition row-number