示例代码
DECLARE @tHistory TABLE (PK INT IDENTITY, CustomerID INT, PaidAmount DECIMAL(18, 2), PaidDate DATE)
INSERT INTO @tHistory(CustomerID, PaidAmount, PaidDate) VALUES(123, 100.00, '4/1/2024')
INSERT INTO @tHistory(CustomerID, PaidAmount, PaidDate) VALUES(321, 500.00, '4/1/2024')
INSERT INTO @tHistory(CustomerID, PaidAmount, PaidDate) VALUES(123, 99.00, '5/1/2024')
INSERT INTO @tHistory(CustomerID, PaidAmount, PaidDate) VALUES(123, 103.00, '6/1/2024')
INSERT INTO @tHistory(CustomerID, PaidAmount, PaidDate) VALUES(321, 95.00, '6/1/2024')
INSERT INTO @tHistory(CustomerID, PaidAmount, PaidDate) VALUES(555, 95.00, '6/1/2024')
INSERT INTO @tHistory(CustomerID, PaidAmount, PaidDate) VALUES(123, 99.00, '8/1/2024')
INSERT INTO @tHistory(CustomerID, PaidAmount, PaidDate) VALUES(321, 503.00, '10/1/2024')
DECLARE @tReport TABLE (CustomerID INT, CurrentPK INT, PreviousPK INT)
INSERT INTO @tReport (CustomerID, CurrentPK) SELECT CustomerID, PK FROM @tHistory WHERE PaidDate = '6/1/2024'
因此,如果我有此查询,我想找到该客户的上一个条目
结果应该是这个例子中的
我想事情会是这样的 ORDER BY row_number() OVER (PARTITION BY CustomerID ORDER BY PK DESC) 但我就是找不到合适的组合。
谢谢你
选择*来自 ( SELECT *, LAG(pk) OVER (PARTITION BY CustomerID ORDER BYpaiddate) as PreviousPK2 FROM @tHistory ) t WHERE 付费日期 = '6/1/2024'