質問の編集履歴

< 前の版

編集後

2017/01/07 22:08:40

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(重複除外無しの場合) (※WHERE条件削除)
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 [予約名]

質問ページに戻る