Sql 如何使用窗口函数引用较新的记录?
我相信我有使用窗口功能的要求,但我不太确定。我的数据格式如下:Sql 如何使用窗口函数引用较新的记录?,sql,sql-server,tsql,sql-server-2012,Sql,Sql Server,Tsql,Sql Server 2012,我相信我有使用窗口功能的要求,但我不太确定。我的数据格式如下: 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
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是根据作业ID计算的。如果该作业ID有较新的审核记录,则AuditToDate是较新审核记录的AuditFromDate。否则为空
有什么办法可以做到这一点吗?
LEAD
将非常适合这里,如下所示:
SELECT JobID, ActiveFromDate,
LEAD(ActiveFromDate) OVER (PARTITION BY JobID ORDER BY ActiveFromDate) AS ActiveToDate,
RecID, TypeID
FROM table
非常感谢。我甚至都不知道这个函数,但它就像你说的那样完美地完成了工作