2014-02-25 112 views
-4

我想計算每個ID的天數,但天數重疊。SQL:計算重疊日期範圍內的天數

ID STARTDATE ENDDATE 
1 19/12/2012 29/01/2013 
1 30/05/2013 14/07/2013 
1 15/02/2013 12/03/2013 
1 13/03/2013 18/03/2013 
1 19/03/2013 26/03/2013 
1 27/01/2013 07/04/2013 
1 08/04/2013 09/04/2013 
2 08/04/2013 14/07/2013 
2 30/05/2013 12/07/2013 
3 08/04/2013 10/04/2013 
3 23/05/2013 30/06/2013 
+0

請提供您希望看到的結果是什麼一個明顯的例子。另外,你到目前爲止嘗試過什麼? – PinnyM

+0

歡迎來到SO。你有什麼嘗試?該網站用於解決問題,而不是從頭開始準備好複製粘貼解決方案。 –

+0

你能解釋一下你的問題嗎?爲什麼你不能使用'DateDiff()'? – ovaltein

回答

0
SELECT SUM(DATEDIFF(d,STARTDATE,ENDDATE)) AS [Days],ID 
FROM TABLE 
GROUP BY ID 

或獲得天最小/最大日期範圍次數:

SELECT D.ID, SUM(DATEDIFF(d,D.STARTDATE,D.ENDDATE)) AS [Days] 
FROM (
SELECT ID, MIN(STARTDATE) AS [STARTDATE], MAX(ENDDATE) AS [ENDATE] 
FROM TABLE 
GROUP BY ID , MIN(STARTDATE), MAX(ENDDATE) 
) AS D 
ORDER BY D.ID