2013-12-16 192 views
1

我有表格,開始日期和結束日期行如下。SQL查詢刪除重疊開始日期和結束日期

START Date | END Date 
2013-01-01 | 2013-09-30 
2013-01-01 | 2013-12-31 
2013-10-01 | 2013-12-31 
2014-01-01 | 2099-12-31 

期望的結果是

START Date | END Date 
2013-01-01 | 2013-09-30 
2013-10-01 | 2013-12-31 
2014-01-01 | 2099-12-31 

我需要一個查詢來刪除重複的行日期重疊。查詢需要保留具有較小日期範圍的行,在上面的示例中,查詢應刪除包含開始日期2013年1月1日和結束日期12/31/2013的行。

我正在使用SQL Server 2008.可以使用遞歸CTE,row_number()函數編寫查詢。

回答

0
with cte 
As 
(
Select Row_Number() Over(Partition By [Start DATE] 
         Order By Datediff(dd,[Start Date],[End Date]) Asc 
) as RNo, [Start Date], [End Date] from yourtablename) 
Select [Start Date],[End Date] from Cte where RNo =1; 
相關問題