You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用ROW_NUMBER()仅对不同rolesContainerID计数?

解决方案

你需要将原查询中的ROW_NUMBER()替换为DENSE_RANK()函数,因为DENSE_RANK()会为具有相同rolesContainerID的行分配相同的排名值,并且排名是连续递增的,正好符合你需要同一rolesContainerID对应相同count#的需求。

修改后的SQL查询如下:

SELECT 
    sg.rolesID, 
    count# = DENSE_RANK() OVER (ORDER BY sg.rolesContainerID),
    sg.rolesContainerID,
    eventTimeStamp AS timeStarted, 
    eventTimeStamp AS timeFinished
FROM 
    view_SecurityGroup sg 
WHERE 
    sg.rolesID = '22400ab8-62a2-4a69-b002-5dd4d0459728'
ORDER BY 
    sg.rolesContainerID, timeStarted, timeFinished DESC

关键差异说明:

  • ROW_NUMBER():对结果集中的每一行生成唯一的连续编号,即使行的排序字段值相同,编号也会逐行递增。
  • DENSE_RANK():为排序字段值相同的行分配相同的排名,且排名不会出现间隔(不会出现1、1、3这类跳号情况),完全匹配你期望的count#仅在rolesContainerID变化时递增的规则。

内容的提问来源于stack exchange,提问作者SkyeBoniwell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 03:29:51