SQL Server 2012 のSQL文について
10月を集計月として、予約名をグループ化して、
重複除外無しの予約日数合計と、
重複除外有りの予約日数合計を求めたいのですが、
重複除外無しは求めることができたのですが、重複除外有りについてわからなく困っています。
どなたかわかる方いらっしゃいましたら、ご教授をお願いします。
▪️予約情報
予約名, 予約開始日, 予約終了日
予約1, 2016/9/2, 2016/10/5
予約1, 2016/10/4, 2016/10/30
予約2, 2016/10/1, 2016/10/5
予約3, 2016/10/16, 2016/11/6
↓
▪結果
予約1, 30
予約2, 5
予約3, 16
■SQL(重複除外無しの場合)
SELECT [予約名],
SUM(DATEDIFF(d,
CASE WHEN [予約開始日] BETWEEN '2016/10/1' AND '2016/10/31' THEN [予約開始日]
WHEN [予約開始日] < '2016/10/1' AND [予約終了日] >= '2016/10/1' THEN '2016/10/1' END,
CASE WHEN [予約終了日] BETWEEN '2016/10/1' AND '2016/10/31' THEN [予約終了日]
WHEN [予約終了日] > '2016/10/31' AND [予約開始日] <= '2016/10/31' THEN '2016/10/31' END
) + 1
) AS '重複除外無しの予約日数合計'
FROM [予約情報]
GROUP BY [予約名]
SQL Server 2012 のSQL文について
10月を集計月として、予約名をグループ化して、
重複除外無しの予約日数合計と、
重複除外有りの予約日数合計を求めたいのですが、
重複除外無しは求めることができたのですが、重複除外有りについてわからなく困っています。
どなたかわかる方いらっしゃいましたら、ご教授をお願いします。
■予約情報
予約名, 予約開始日, 予約終了日
予約1, 2016/9/2, 2016/10/5
予約1, 2016/10/4, 2016/10/30
予約2, 2016/10/1, 2016/10/5
予約3, 2016/10/16, 2016/11/6
↓
■結果
予約1, 30
予約2, 5
予約3, 16
■SQL(重複除外無しの場合)
SELECT [予約名],
SUM(DATEDIFF(d,
CASE WHEN [予約開始日] BETWEEN '2016/10/1' AND '2016/10/31' THEN [予約開始日]
WHEN [予約開始日] < '2016/10/1' AND [予約終了日] >= '2016/10/1' THEN '2016/10/1' END,
CASE WHEN [予約終了日] BETWEEN '2016/10/1' AND '2016/10/31' THEN [予約終了日]
WHEN [予約終了日] > '2016/10/31' AND [予約開始日] <= '2016/10/31' THEN '2016/10/31' END
) + 1
) AS '重複除外無しの予約日数合計'
FROM [予約情報]
GROUP BY [予約名]