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

如何在SQL Server中获取对应SKU的上一笔金额数据?

解决SQL Server中按SKU分组获取上一笔金额的问题

你遇到的问题是因为LAG函数缺少了按SKU分组的逻辑,默认会在整个结果集里取上一行数据,而非当前SKU组内的上一条记录。

正确实现代码

使用PARTITION BY SKU将数据按SKU拆分独立分组,再在组内按日期(可结合Fol确保排序唯一)排序,最后用COALESCE将无历史数据的NULL替换为指定分隔符:

SELECT 
    Date,
    Fol,
    SKU,
    Amount,
    COALESCE(LAG(Amount) OVER (PARTITION BY SKU ORDER BY Date, Fol), '-') AS Previous_Amount
FROM 
    YourTableName;

关键参数说明

  • PARTITION BY SKU:把相同SKU的记录归为一组,LAG函数仅在组内计算上一条数据
  • ORDER BY Date, Fol:在SKU组内按日期排序,若存在同一日期多条记录,追加Fol字段保证排序的唯一性,避免结果混乱
  • COALESCE(..., '-'):当组内是第一条记录(无历史数据)时,将返回的NULL替换为你需要的分隔符(这里用'-',可自行修改)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 23:25:16