sql - 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
解决方案
在这里猜测,因为我们没有太多澄清,但也许是这样:
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 ;
推荐阅读
- php - 如何在heredoc中编写循环
- java - 按下弹出窗口中的按钮时从另一个类调用方法
- python - 正态曲线图非...正态
- node.js - Mongodb全文搜索按时间戳排序?
- python - 防止 Popen 更改 python 版本
- node.js - 转换后的base64图像不起作用,我怎样才能得到真正的base64图像?
- sql - 通过 DACPAC 部署数据库时,一些更新触发器正在添加额外的行 EXECUTE sp_settriggerorder
- c# - 多个摄像机 - 固定:随机房间
- sql-server - 最小化预登台数据库事务日志增长
- arm - QEMU-system-arm 安装缺少 sabrelite 机器