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

SQL查询WHERE条件异常及获取全SKU最大exdt/seq记录问题

问题根因

  1. 最初SQL返回多item记录的原因:WHERE条件仅过滤了exdt、seq等于item=5343553对应的最大值,没有增加item='5343553'的过滤条件,所有符合该exdt、seq取值的记录都会被返回,和item无关。
  2. 修改后返回空值的原因:你取的是全表全局最大exdt和全局最大seq,这两个值大概率不属于同一条记录,不存在同时满足两个条件的行,自然返回空。而且就算存在这样的行,也只能拿到全表唯一的一条记录,完全不符合你「每个sku对应自身max exdt/seq记录」的需求。

解决方案

推荐使用窗口函数按item分组取每个sku的目标记录,性能和可读性远优于你当前的子查询写法,修正后的完整SQL如下:

SELECT *
FROM (
    SELECT 
        item, cpp, exdt, seq, 
        tv_1 + tf_1 AS tt_1,
        -- 按item分组,先按exdt倒序、再按seq倒序排序,排名第一的就是当前item最大exdt+最大seq的记录
        ROW_NUMBER() OVER (PARTITION BY item ORDER BY exdt DESC, seq DESC) AS rn
    FROM dbo.sample123
) t
WHERE rn = 1 -- 仅保留每个item的top1记录
PIVOT (
    SUM(tt_1) FOR cpp IN ([M], [LL], [OH])
) AS pvtc

补充说明

  • 如果你的业务逻辑是优先取最大seq、再取最大exdt,调整窗口函数ORDER BY的字段顺序即可:ORDER BY seq DESC, exdt DESC
  • 如果同一个item下存在多条符合「最大exdt+最大seq」的重复行需要全部保留,将ROW_NUMBER替换为RANK或DENSE_RANK即可
  • 你原SQL中的PIVOT语法存在括号遗漏问题,上述代码已经修正了该语法错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 20:54:05