在 SQL 中限制 LAG

limiting LAG in SQL

我正在使用 LAG 函数 return 以前的记录。由于记录在日期方面不一定是连续的,我决定采用 LAG 路线(如果有更好的方法请分享)。我 运行 遇到的问题是,当我每个项目只需要一个记录时,它会为我提供所有记录。我该如何限制结果?

这是每个人说的项目 a 的数据集:

PO Number BillingDate DiscountRecNo item
0646546541 12/12/2021 4654064 4656
4651132066 10/13/2021 8984653 4655
4654113866 11/13/2021 6464651 4656
9865413488 08/05/2021 5461984 4655

对于此示例,我只需要 PO 编号 9865413488 用于商品 4655 和 4654113866 用于商品 4656。

这是我的

            LAG(LT.CondRecNo, 1, 0) OVER(ORDER BY LT.BillingDate DESC) AS PREVIOUSCONDRECNO

看来你不需要 lag() 只需要 row_number()

   with cte as
    (select *,row_number()over(partition by item order by BillingDate) rn
    ) select a.* from cte whre rn=1