使用分区方式删除重复项

时间:2018-09-07 18:28:44

标签: rank

我试图弄清楚如何删除表中的重复项,同时还保留在不同日期可能发生的任何更改。因此,如果以下面的示例为例,到目前为止,我所做的就是按我的唯一字段列表(不包括日期)进行分区,按日期升序排列,然后对它们进行相应排名。请注意,我有更多的字段和行,但是将其压缩下来以便于阅读。

通常,我只需要查询Rank = 1的行,因为这将返回我真正的唯一字段列表,并且在最近一次更改时,这就是我想要的。但是,我还试图捕获随着时间推移而发生的独特变化。鉴于纽约州已于2017-03-11恢复为“新泽西州”,因此,我需要找到一种方法来保持该记录。所以我的最终结果集将包括2016-11-08、2016-11-09和2017-03-11的日期。我现在被困住了,所以我希望提出建议。谢谢!

Ranking = RANK() OVER (PARTITION BY
                                  [State]
                                 ,[DomicileCountryCode]
                                ,[DomicileCountryname]
                        ORDER BY FullDate ASC)

enter image description here

1 个答案:

答案 0 :(得分:0)

进行更多搜索后,我可以在其他论坛上找到答案。希望可以在此处发布链接。基本上,它将创建两个不同的ROW_NUMBER字段,您可以将其分组以创建唯一的子集。然后,在最上面的SELECT语句中,我使用MIN来获取这3个子集的第一个可用日期。下面的链接将提供一个清晰的示例。非常优雅,非常不错的解决方案。

T-SQL to Group time interval change by date range in sql server