我正在尝试对MS SQL Server表中的某些数据进行重复数据删除,但找不到解决方案,因此希望有人能提供帮助。我一直在寻找答案,但大多数人似乎都说这是一个“孤岛与差距”的问题,但我无法根据我的情况调整所看到的解决方案。
这里是我正在使用的源数据的示例
<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS96SXhlcy5wbmcifQ==” alt =“源示例[1]”>
连续价格相同的情况下,我想将其合并为单行,且有效期自迄今。
]
我尝试使用PARTITION OVER子句,但是即使它们之间存在另一个价格,它似乎总是将所有相同的价格分组在一起,并且似乎忽略了分区的ORDER BY部分。
有什么想法吗?
您可以使用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);