在SQL Server中合并连续的重复行

问题描述 投票:-1回答:1

我正在尝试对MS SQL Server表中的某些数据进行重复数据删除,但找不到解决方案,因此希望有人能提供帮助。我一直在寻找答案,但大多数人似乎都说这是一个“孤岛与差距”的问题,但我无法根据我的情况调整所看到的解决方案。

这里是我正在使用的源数据的示例

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS96SXhlcy5wbmcifQ==” alt =“源示例[1]”>

连续价格相同的情况下,我想将其合并为单行,且有效期自迄今。

“]

我尝试使用PARTITION OVER子句,但是即使它们之间存在另一个价格,它似乎总是将所有相同的价格分组在一起,并且似乎忽略了分区的ORDER BY部分。

有什么想法吗?

sql sql-server gaps-and-islands
1个回答
0
投票

您可以使用row_number()

select item, price, min(validfrom), max(validto)
from (select t.*, 
             row_number() over(partition by item order by validfrom desc) as seq1,
             row_number() over(partition by item, price by validfrom desc) as seq2
      from table t
     ) t
group by item, price, (seq1 - seq2);
© www.soinside.com 2019 - 2024. All rights reserved.