如何使用 window 函数来引用较新的记录?
How to use a window function to refer to a newer record?
我想我需要使用 window 函数,但我不太确定。我的数据格式如下:
JobID ActiveFromDate RecID TypeID
J1 01/12/2020 441166 LI2
J1 25/11/2020 375213 LO1
J1 24/11/2020 375207 LO2
J2 02/12/2020 441378 LO1
J2 01/12/2020 376896 LO2
J2 30/11/2020 375288 LI1
J3 03/12/2020 441894 LO2
J3 01/11/2020 374558 LI1
J3 31/10/2020 371285 LI2
J4 02/12/2020 441295 LI1
J4 13/11/2020 374598 LO2
J4 01/11/2020 374423 LO1
我想讲这个:
JobID ActiveFromDate ActiveToDate RecID TypeID
J1 01/12/2020 441166 LI2
J1 25/11/2020 01/12/2020 375213 LO1
J1 24/11/2020 25/11/2020 375207 LO2
J2 02/12/2020 441378 LO1
J2 01/12/2020 02/12/2020 376896 LO2
J2 30/11/2020 01/12/2020 375288 LI1
J3 03/12/2020 441894 LO2
J3 01/11/2020 03/12/2020 374558 LI1
J3 31/10/2020 01/11/2020 371285 LI2
J4 02/12/2020 441295 LI1
J4 13/11/2020 02/12/2020 374598 LO2
J4 01/11/2020 13/11/2020 374423 LO1
AuditToDate 是根据 JobID 计算的。如果该 JobID 有较新的审计记录,则 AuditToDate 是较新审计记录的 AuditFromDate。否则为空白。
有什么办法可以做到这一点吗?
LEAD
将非常适合这里:
SELECT JobID, ActiveFromDate,
LEAD(ActiveFromDate) OVER (PARTITION BY JobID ORDER BY ActiveFromDate) AS ActiveToDate,
RecID, TypeID
FROM table
我想我需要使用 window 函数,但我不太确定。我的数据格式如下:
JobID ActiveFromDate RecID TypeID
J1 01/12/2020 441166 LI2
J1 25/11/2020 375213 LO1
J1 24/11/2020 375207 LO2
J2 02/12/2020 441378 LO1
J2 01/12/2020 376896 LO2
J2 30/11/2020 375288 LI1
J3 03/12/2020 441894 LO2
J3 01/11/2020 374558 LI1
J3 31/10/2020 371285 LI2
J4 02/12/2020 441295 LI1
J4 13/11/2020 374598 LO2
J4 01/11/2020 374423 LO1
我想讲这个:
JobID ActiveFromDate ActiveToDate RecID TypeID
J1 01/12/2020 441166 LI2
J1 25/11/2020 01/12/2020 375213 LO1
J1 24/11/2020 25/11/2020 375207 LO2
J2 02/12/2020 441378 LO1
J2 01/12/2020 02/12/2020 376896 LO2
J2 30/11/2020 01/12/2020 375288 LI1
J3 03/12/2020 441894 LO2
J3 01/11/2020 03/12/2020 374558 LI1
J3 31/10/2020 01/11/2020 371285 LI2
J4 02/12/2020 441295 LI1
J4 13/11/2020 02/12/2020 374598 LO2
J4 01/11/2020 13/11/2020 374423 LO1
AuditToDate 是根据 JobID 计算的。如果该 JobID 有较新的审计记录,则 AuditToDate 是较新审计记录的 AuditFromDate。否则为空白。
有什么办法可以做到这一点吗?
LEAD
将非常适合这里:
SELECT JobID, ActiveFromDate,
LEAD(ActiveFromDate) OVER (PARTITION BY JobID ORDER BY ActiveFromDate) AS ActiveToDate,
RecID, TypeID
FROM table