2

私は予約アプリケーションに取り組んでおり、ホテルの稼働率を月ごとに計算するクエリを作成しています。そのためには、すべての予約のチェックイン日とチェックアウト日を確認し、いくつかの変数を増やして対応する月に関連付ける必要があります。この率を現在の年で測定するだけで済みます。予約のチェックアウト日またはチェックイン日が 3 月の場合 (たとえば)、その月の職業に対応する変数をインクリメントする必要があります。そして、その年の間隔内のすべての予約に対してこれを行う必要があります。

予約にはチェックイン日とチェックアウト日があり、他の属性はこのクエリには関係ありません。入力パラメーターは BeginDate (2015-01-01 ) と EndDate (2015-12-31) です。

Month       Ocupation
[JANUARY] | 29
[FEBRUARY] | 20
[MARCH] | 30
....... | ... 

これは私がこれまでに行ったことであり、現時点ではちょっと迷っています。どんな助けでも大歓迎です。

   Select  
        SUM(CASE WHEN datename(month, [CheckIn]) = 'January' or datename(month, [CheckOut]) = 'January' THEN 1 ELSE 0 END)  January,
        SUM(CASE WHEN datename(month, [CheckIn]) = 'February' or datename(month, [CheckOut]) = 'February' THEN 1 ELSE 0 END) February,
        SUM(CASE WHEN datename(month, [CheckIn]) = 'March' or datename(month, [CheckOut]) = 'March' THEN 1 ELSE 0 END) March,
        SUM(CASE WHEN datename(month, [CheckIn]) = 'April' or datename(month, [CheckOut]) = 'April' THEN 1 ELSE 0 END)  April,
        SUM(CASE WHEN datename(month, [CheckIn]) = 'May' or datename(month, [CheckOut]) = 'May' THEN 1 ELSE 0 END)  May,
        SUM(CASE WHEN datename(month, [CheckIn]) = 'June' or datename(month, [CheckOut]) = 'June' THEN 1 ELSE 0 END) June,
        SUM(CASE WHEN datename(month, [CheckIn]) = 'July' or datename(month, [CheckOut]) = 'July' THEN 1 ELSE 0 END) July,
        SUM(CASE WHEN datename(month, [CheckIn]) = 'August' or datename(month, [CheckOut]) = 'August' THEN 1 ELSE 0 END) August,
        SUM(CASE WHEN datename(month, [CheckIn]) = 'September' or datename(month, [CheckOut]) = 'September' THEN 1 ELSE 0 END) September,
        SUM(CASE WHEN datename(month, [CheckIn]) = 'October' or datename(month, [CheckOut]) = 'October' THEN 1 ELSE 0 END) October,
        SUM(CASE WHEN datename(month, [CheckIn]) = 'November' or datename(month, [CheckOut]) = 'November' THEN 1 ELSE 0 END) November,
        SUM(CASE WHEN datename(month, [CheckIn]) = 'December' or datename(month, [CheckOut]) = 'December' THEN 1 ELSE 0 END) December
FROM {Booking} INNER JOIN {Status} ON {Booking}.[StatusId] = {Status}.[Id]
WHERE {Booking}.[CheckIn] >= @BeginDate AND {Booking}.[CheckOut]  <= @EndDate AND {Status}.[Label] <> 'Canceled' 
4

1 に答える 1