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

如何为表中各SKU匹配对应行的下一个成本核算日期?

问题描述

我有一张记录产品(SKU)成本价格变更日期的数据表,需要为表添加Date_Next_Costed列,填入该SKU的下一次成本核算日期,形成类起止日期字段。当前查询仅能返回该SKU的最后一次成本核算日期,无法获取下一个日期,寻求解决方案。

示例数据表

SKUCostDate_Costed
R001£4.5001/03/2023
R002£3.8201/03/2023
R001£4.5413/03/2023
R004£1.9213/03/2023
R001£4.6931/03/2023

期望结果

SKUCostDate_CostedDate_Next_Costed
R001£4.5001/03/202313/03/2023
R002£3.8201/03/202301/03/2023
R001£4.5413/03/202331/03/2023
R004£1.9213/03/202301/03/2023
R001£4.6931/03/2023
解决方案

使用SQL窗口函数LEAD()即可实现需求,该函数能在同一SKU分组内,按日期排序后获取下一行的成本核算日期。

基础逻辑实现(推荐)

如果希望无后续日期时返回NULL(更符合起止日期的逻辑定义),执行以下查询:

SELECT
    SKU,
    Cost,
    Date_Costed,
    LEAD(Date_Costed) OVER (PARTITION BY SKU ORDER BY Date_Costed) AS Date_Next_Costed
FROM
    your_table_name;
  • PARTITION BY SKU:限定仅在当前SKU的范围内查找下一次日期
  • ORDER BY Date_Costed:按核算日期升序排列,确保获取的是下一次的有效日期

匹配给定期望结果

若需要为仅有一条记录的SKU填充当前日期作为Date_Next_Costed,用COALESCE()处理LEAD()返回的NULL:

SELECT
    SKU,
    Cost,
    Date_Costed,
    COALESCE(LEAD(Date_Costed) OVER (PARTITION BY SKU ORDER BY Date_Costed), Date_Costed) AS Date_Next_Costed
FROM
    your_table_name;

注:你给出的R004期望结果中Date_Next_Costed为01/03/2023(早于当前日期),推测是输入笔误,上述查询会为R004返回自身的13/03/2023,更符合业务逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 20:14:59