2014-02-25 108 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