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

SQL中PARTITION BY结合row_number按日期序号分组取数问题

问题原因

原SQL无法返回预期结果,核心错误有3个:

  • 窗口函数PARTITION BY分组字段配置错误:将Seqn放进了分组字段,会导致每个唯一的(Date+Item+Location+Seqn)组合单独成组,每组仅1条记录,计算出的row_num永远为1,无法实现同Date下按Seqn排序生成连续序号的需求
  • 存在多余过滤逻辑:添加了row_num = 1的过滤条件,会把同Date下Seqn更大的记录全部筛除,和你需要保留同Date下所有记录、生成连续序号的需求冲突
  • 字段名笔误:最后ORDER BY子句中写的trdt字段在查询逻辑中不存在,实际应为date字段,运行时会直接报字段不存在的错误
正确SQL实现
SELECT
    Date,
    Item,
    Location,
    Seqn,
    ROW_NUMBER() OVER(
        PARTITION BY Item, Location, Date
        ORDER BY Seqn ASC
    ) AS `Row_number`
FROM table1
WHERE
    Item = 'A1234'
    AND Location = 'L1'
ORDER BY
    Date,
    Seqn
逻辑说明
  • 分组规则:PARTITION BY仅保留需要聚合的维度,将相同Item、Location、Date的记录归为同一组,完全匹配“同一Date下排序”的需求
  • 排序规则:组内按Seqn升序排列,依次生成从1开始的连续序号,和给出的预期结果完全一致
  • 移除了多余的嵌套CTE和错误过滤条件,逻辑更简洁,执行效率更高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 05:21:47