SQl Server合并相邻的重复行



表数据如下,我想用Name选择更新日期的最小值。如果相邻名称相同,则需要合并名称。和按更新日期升序选择记录

Name UpdatedDate
L     05-May-2022
S     09-May-2022
S     09-May-2022
A     10-May-2022
A     15-May-2022
L     16-May-2022
S     17-May-2022
S     19-May-2022
K     01-May-2022 

预期输出

Name UpdatedDate
K     01-May-2022 
L     05-May-2022
S     09-May-2022 
A     10-May-2022 
L     16-May-2022
S     17-May-2022 

假设:

  1. 你的日期总是按升序排列,AND
  2. 你的SQL Server版本支持LEAD和Lag函数

你可以试试:

SELECT NAME, UPDATEDDATE
FROM
(SELECT NAME, UPDATEDDATE, LAG(NAME, 1, 'DEFAULTVALUE') OVER (ORDER BY UPDATEDDATE) AS LAGNAME) T
WHERE T.NAME <> T.LAGNAME

使用lag来查找哪些行属于同一个"组"。基于Name列,然后取第一行,根据假设1,第一行也应该包含最早的日期。

使用组By。Select Name, UpdatedDate from YourTable Group By Name, UpdatedDate

相关内容

  • 没有找到相关文章

最新更新