请在下面找到样本日期。我想创建一个新的列Payment_received,它查找非空的payment_dates,并减去(付款日期-该账号的最早短信日期)。例如,对于账号12345,计算结果为(2021-07-22 - 2021-07-20) =2天;对于账号99999,计算结果为(2021-08-13 - 2021-08-10) =3天。我在想,如果我可以创建一个何时执行此计算的案例,然而,我不知道如何引用同一帐号的不同行。
SMS_Date Account Number Payment_Date Payment_received
2021-07-20 12345 NULL NULL
2021-07-21 12345 NULL NULL
2021-07-22 12345 2021-07-22 2
2021-08-10 99999 NULL NULL
2021-08-11 99999 NULL NULL
2021-08-12 99999 NULL NULL
2021-08-13 99999 2021-08-13 3发布于 2021-08-19 17:16:34
使用CROSS APPLY查找原始表中每一行的最早短信日期。
SELECT
pi.*,
CASE
WHEN pi.Payment_Date IS NOT NULL THEN DATEDIFF(d, smsdate.First_SMS_Date, pi.Payment_Date)
ELSE NULL
END AS Payment_Received
FROM
PaymentsInfo pi
CROSS APPLY (
SELECT
MIN(SMS_Date) AS First_SMS_Date
FROM
PaymentsInfo smst
WHERE
pi.Payment_Date IS NOT NULL AND pi.Account_Number = smst.Account_Number
) smsdatehttps://stackoverflow.com/questions/68850709
复制相似问题