【发布时间】:2015-03-10 11:51:55
【问题描述】:
我正在开发一个预订应用程序,我正在创建一个查询,按月计算酒店的入住率。为此,我必须检查所有预订的入住和退房日期,并增加一些变量并将它们与相应的月份相关联。 我只需要在当年测量这个比率。 如果预订的结帐日期或入住日期是三月(例如),我需要增加对应于该月职业的变量。我需要为该年间隔内的每次预订执行此操作。
Booking 有入住日期和退房日期,其他属性与本次查询无关,输入参数为 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'
【问题讨论】:
-
你能发布一些示例数据吗?
-
想要的结果?没有足够的信息来回答您的问题。
-
如果一个预订在 1 月有 CheckIn,在 2 月有 CheckOut,那么 1 月和 2 月都应该算作 1 吗?
-
是的,这两个月都应该算@jpw
-
您遇到了什么问题?
标签: sql sql-server outsystems