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

如何修正SQL查询以获取每个客户的最近5个预测日期?

修正查询以获取每个客户的最近5个预测日期

原查询的核心问题是分区和排序逻辑错误:你按Plant, ForecastDate分区、按Customer排序,导致结果仅筛选出每个工厂+预测日期组合下的一条客户数据,完全不符合“获取每个客户最近5个预测日期”的需求。

以下是修正后的查询代码:

SELECT Customer, Plant, ForecastDate
FROM (
    SELECT 
        Customer, 
        Plant, 
        ForecastDate,
        -- 按客户分区,按预测日期倒序生成行号
        ROW_NUMBER() OVER(
            PARTITION BY Customer 
            -- 若同一客户不同工厂需单独统计,改为 PARTITION BY Customer, Plant
            ORDER BY ForecastDate DESC
        ) AS ROW_NUM
    FROM 你的实际表名  -- 替换为你的数据表名称
) AS T
WHERE ROW_NUM <= 5  -- 保留每个客户最近的5个日期
ORDER BY Customer, ForecastDate DESC;

关键逻辑说明:

  • PARTITION BY Customer:确保为每个客户独立计算行号,互不干扰
  • ORDER BY ForecastDate DESC:让最新的预测日期排在最前,行号标记为1
  • WHERE ROW_NUM <=5:筛选出每个客户的前5条最新日期记录
  • 若业务需要按「客户+工厂」维度分别统计,只需修改分区条件为PARTITION BY Customer, Plant

如果需要同时展示Quantity字段,直接在内外层的SELECT中添加该字段即可,核心逻辑保持不变。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 14:45:27