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

如何在SQL查询中正确使用ROW_NUMBER函数生成所需序号列

问题原因

你当前的查询逻辑错误点为PARTITION BY选择的字段不符合需求:

  • PARTITION BY DetailId会将所有相同DetailId的行划分为独立分组,ROW_NUMBER()会在每个分组内部单独从1开始计数,最终几乎所有行的RowNum都会返回1,和预期结果不符。

调整后的查询语句

你需要按Masterid进行分组,同一个Masterid下的记录按DetailId排序后生成序号,调整后语句如下:

SELECT 
    ROW_NUMBER() OVER(PARTITION BY Masterid ORDER BY DetailId) AS RowNum,
    Masterid,
    DetailId 
FROM 
    #DATA

逻辑说明

  • PARTITION BY Masterid会将相同Masterid的行归类到同一个分组
  • 同一分组内按DetailId升序排序,依次生成从1开始的连续行号,即可得到你需要的输出结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 07:36:05