Javascript 当“2014-06-11 09:45:00”在开始时间和结束时间之间时,则1个ELSE 0结束+案例,然后0.5个ELSE 0结束)作为H9 ,求和(当开始时间和结束时间之间的“2014-06-11 10:15:00”为1时,其他0结束+当开始时间和结束时
当“2014-06-11 09:45:00”在开始时间和结束时间之间时,则1个ELSE 0结束+案例,然后0.5个ELSE 0结束)作为H9 ,求和(当开始时间和结束时间之间的“2014-06-11 10:15:00”为1时,其他0结束+当开始时间和结束时间之间的“2014-06-11 10:45:00”为0.5时,其他0结束)为H10 ,求和(当开始时间和结束时间之间的“2014-06-11 11:15:00”为1时,其他0结束+当开始时间和结束时间之间的“2014-06-11 11 11:45:00”为0.5时,其他0结束)为H11 ,求和(当开始时间和结束时间之间的“2014-06-11 12:15:00”为1时,其他0结束+当开始时间和结束时间之间的“2014-06-11 12:45:00”为0.5时,其他0结束)为H12 ,求和(当开始时间和结束时间之间的“2014-06-11 13:15:00”为1时,其他0结束+当开始时间和结束时间之间的“2014-06-11 13:45:00”为0.5时,其他0结束)为H13 ,求和(当开始时间和结束时间之间的“2014-06-11 14:15:00”为1时,其他0结束+当开始时间和结束时间之间的“2014-06-11 14:45:00”为0.5时,其他0结束)为H14 ,求和(当开始时间和结束时间之间的“2014-06-11 15:15:00”为1时,其他0结束+当开始时间和结束时间之间的“2014-06-11 15:45:00”为0.5时,其他0结束)为H15 ,求和(当开始时间和结束时间之间的“2014-06-11 16:15:00”为1时,其他0结束+当开始时间和结束时间之间的“2014-06-11 16:45:00”为0.5时,其他0结束)为H16 ,求和(当开始时间和结束时间之间的“2014-06-11 17:15:00”为1时,其他0结束+当开始时间和结束时间之间的“2014-06-11 17:45:00”为0.5时,其他0结束)为H17 ,求和(当开始时间和结束时间之间的“2014-06-11 18:15:00”为1时,其他0结束+当开始时间和结束时间之间的“2014-06-11 18:45:00”为0.5时,其他0结束)为H18 ,求和(当开始时间和结束时间之间的“2014-06-11 19:15:00”为1时,其他0结束+当开始时间和结束时间之间的“2014-06-11 19:45:00”为0.5时,其他0结束)为H19 ,求和(如果开始时间和结束时间之间为“2014-06-11 20:15:00”,则为1其他0结束+如果开始时间和结束时间之间为“2014-06-11 20:45:00”,则为0.5其他0结束)为H20 ,求和(当开始时间和结束时间之间的“2014-06-11 21:15:00”为1时,其他0结束+当开始时间和结束时间之间的“2014-06-11 21:45:00”为0.5时,其他0结束)为H21 ,求和(当开始时间和结束时间之间为“2014-06-11 22:15:00”时,则为1其他0结束+当开始时间和结束时间之间为“2014-06-11 22:45:00”时,则为0.5其他0结束)为H22 ,求和(当开始时间和结束时间之间的“2014-06-11 23:15:00”为1时,其他0结束+当开始时间和结束时间之间的“2014-06-11 23:45:00”为0.5时,其他0结束)为H23 从预订 左连接设施 预订时.LocationKey=设施.LocationKey 哪里 (开始时间>='2014-06-11 00:00:00'和 开始时间<'2014-06-12 00:00:00') 或 (结束时间>='2014-06-11 00:00:00'和 结束时间<'2014-06-12 00:00:00') 按设备分组d;Javascript 当“2014-06-11 09:45:00”在开始时间和结束时间之间时,则1个ELSE 0结束+案例,然后0.5个ELSE 0结束)作为H9 ,求和(当开始时间和结束时间之间的“2014-06-11 10:15:00”为1时,其他0结束+当开始时间和结束时,javascript,html,sql,Javascript,Html,Sql,当“2014-06-11 09:45:00”在开始时间和结束时间之间时,则1个ELSE 0结束+案例,然后0.5个ELSE 0结束)作为H9 ,求和(当开始时间和结束时间之间的“2014-06-11 10:15:00”为1时,其他0结束+当开始时间和结束时间之间的“2014-06-11 10:45:00”为0.5时,其他0结束)为H10 ,求和(当开始时间和结束时间之间的“2014-06-11 11:15:00”为1时,其他0结束+当开始时间和结束时间之间的“2014-06-11 11 11:4
你能详细解释一下你想做什么吗?你的服务器端语言是什么?嗨,各位,我想每小时查看一次预订情况。例如,如果我从上午11点到下午2点预订了room1,在这些小时视图中(11,12,01小时),它应该显示设备不可用(我现在显示的是'1')您好,Marcelo Bezerra,我正在使用MS SQL进行此操作
+-------------+------------+
| Locationkey | FacilityID |
+-------------+------------+
| 1 | Neptune |
| 2 | Jupiter |
| 3 | Pluto |
+-------------+------------+
+------------+-------------+---------------------------+---------------------------+
| BookingKey | LocationKey | StartTime | EndTime |
+------------+-------------+---------------------------+---------------------------+
| 1 | 1 | '2014-06-11 09:00:00.000' | '2014-06-11 17:00:00.000' |
| 2 | 2 | '2014-06-11 09:00:00.000' | '2014-06-11 12:00:00.000' |
| 3 | 2 | '2014-06-11 13:00:00.000' | '2014-06-11 17:00:00.000' |
| 4 | 3 | '2014-06-11 09:00:00.000' | '2014-06-11 10:00:00.000' |
| 5 | 3 | '2014-06-11 16:00:00.000' | '2014-06-11 17:00:00.000' |
+------------+-------------+---------------------------+---------------------------+
+------------+----+-----+----+----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
| FacilityID | 0h | ... | 8h | 9h | 10h | 11h | 12h | 13h | 14h | 15h | 16h | 17h | ... | 23h |
+------------+----+-----+----+----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
| Neptune | 0 | ... | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | ... | 0 |
| Jupiter | 0 | ... | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | ... | 0 |
| Pluto | 0 | ... | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | ... | 0 |
+------------+----+-----+----+----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
| FACILITYID | DT | H0 | H1 | H2 | H3 | H4 | H5 | H6 | H7 | H8 | H9 | H10 | H11 | H12 | H13 | H14 | H15 | H16 | H17 | H18 | H19 | H20 | H21 | H22 | H23 |
|------------|------------|----|----|----|----|----|----|----|----|----|----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|
| Jupiter | 2014-06-11 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| Neptune | 2014-06-11 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| Pluto | 2014-06-11 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
;with Hrs (StartAt, StopAt)
as (
select 0 as StartAt, 1 as StopAt
union all
select StartAt + 1 , StopAt + 1
from Hrs
where StartAt < 23
)
select
FacilityID
, d.dt
, MAX(case when hrs.StartAt = 0 and Booking.BookingKey IS NOT NULL then 1 else 0 end) as h0
, MAX(case when hrs.StartAt = 1 and Booking.BookingKey IS NOT NULL then 1 else 0 end) as h1
, MAX(case when hrs.StartAt = 2 and Booking.BookingKey IS NOT NULL then 1 else 0 end) as h2
, MAX(case when hrs.StartAt = 3 and Booking.BookingKey IS NOT NULL then 1 else 0 end) as h3
, MAX(case when hrs.StartAt = 4 and Booking.BookingKey IS NOT NULL then 1 else 0 end) as h4
, MAX(case when hrs.StartAt = 5 and Booking.BookingKey IS NOT NULL then 1 else 0 end) as h5
, MAX(case when hrs.StartAt = 6 and Booking.BookingKey IS NOT NULL then 1 else 0 end) as h6
, MAX(case when hrs.StartAt = 7 and Booking.BookingKey IS NOT NULL then 1 else 0 end) as h7
, MAX(case when hrs.StartAt = 8 and Booking.BookingKey IS NOT NULL then 1 else 0 end) as h8
, MAX(case when hrs.StartAt = 9 and Booking.BookingKey IS NOT NULL then 1 else 0 end) as h9
, MAX(case when hrs.StartAt = 10 and Booking.BookingKey IS NOT NULL then 1 else 0 end) as h10
, MAX(case when hrs.StartAt = 11 and Booking.BookingKey IS NOT NULL then 1 else 0 end) as h11
, MAX(case when hrs.StartAt = 12 and Booking.BookingKey IS NOT NULL then 1 else 0 end) as h12
, MAX(case when hrs.StartAt = 13 and Booking.BookingKey IS NOT NULL then 1 else 0 end) as h13
, MAX(case when hrs.StartAt = 14 and Booking.BookingKey IS NOT NULL then 1 else 0 end) as h14
, MAX(case when hrs.StartAt = 15 and Booking.BookingKey IS NOT NULL then 1 else 0 end) as h15
, MAX(case when hrs.StartAt = 16 and Booking.BookingKey IS NOT NULL then 1 else 0 end) as h16
, MAX(case when hrs.StartAt = 17 and Booking.BookingKey IS NOT NULL then 1 else 0 end) as h17
, MAX(case when hrs.StartAt = 18 and Booking.BookingKey IS NOT NULL then 1 else 0 end) as h18
, MAX(case when hrs.StartAt = 19 and Booking.BookingKey IS NOT NULL then 1 else 0 end) as h19
, MAX(case when hrs.StartAt = 20 and Booking.BookingKey IS NOT NULL then 1 else 0 end) as h20
, MAX(case when hrs.StartAt = 21 and Booking.BookingKey IS NOT NULL then 1 else 0 end) as h21
, MAX(case when hrs.StartAt = 22 and Booking.BookingKey IS NOT NULL then 1 else 0 end) as h22
, MAX(case when hrs.StartAt = 23 and Booking.BookingKey IS NOT NULL then 1 else 0 end) as h23
from Hrs
cross join (
select cast('20140611' as date) dt
) as d
cross join Facility
left join Booking on Facility.LocationKey = Booking.LocationKey
and cast(booking.StartTime as date) = d.dt
and Hrs.StartAt >= datepart(hour,StartTime)
and Hrs.StopAt <= datepart(hour,EndTime)
group by
FacilityID
, d.dt
SELECT FacilityID
, SUM(CASE WHEN '2014-06-11 00:15:00' BETWEEN StartTime AND EndTime THEN 1 ELSE 0 END + CASE WHEN '2014-06-11 00:45:00' BETWEEN StartTime AND EndTime THEN 0.5 ELSE 0 END) AS H0
, SUM(CASE WHEN '2014-06-11 01:15:00' BETWEEN StartTime AND EndTime THEN 1 ELSE 0 END + CASE WHEN '2014-06-11 01:45:00' BETWEEN StartTime AND EndTime THEN 0.5 ELSE 0 END) AS H1
, SUM(CASE WHEN '2014-06-11 02:15:00' BETWEEN StartTime AND EndTime THEN 1 ELSE 0 END + CASE WHEN '2014-06-11 02:45:00' BETWEEN StartTime AND EndTime THEN 0.5 ELSE 0 END) AS H2
, SUM(CASE WHEN '2014-06-11 03:15:00' BETWEEN StartTime AND EndTime THEN 1 ELSE 0 END + CASE WHEN '2014-06-11 03:45:00' BETWEEN StartTime AND EndTime THEN 0.5 ELSE 0 END) AS H3
, SUM(CASE WHEN '2014-06-11 04:15:00' BETWEEN StartTime AND EndTime THEN 1 ELSE 0 END + CASE WHEN '2014-06-11 04:45:00' BETWEEN StartTime AND EndTime THEN 0.5 ELSE 0 END) AS H4
, SUM(CASE WHEN '2014-06-11 05:15:00' BETWEEN StartTime AND EndTime THEN 1 ELSE 0 END + CASE WHEN '2014-06-11 05:45:00' BETWEEN StartTime AND EndTime THEN 0.5 ELSE 0 END) AS H5
, SUM(CASE WHEN '2014-06-11 06:15:00' BETWEEN StartTime AND EndTime THEN 1 ELSE 0 END + CASE WHEN '2014-06-11 06:45:00' BETWEEN StartTime AND EndTime THEN 0.5 ELSE 0 END) AS H6
, SUM(CASE WHEN '2014-06-11 07:15:00' BETWEEN StartTime AND EndTime THEN 1 ELSE 0 END + CASE WHEN '2014-06-11 07:45:00' BETWEEN StartTime AND EndTime THEN 0.5 ELSE 0 END) AS H7
, SUM(CASE WHEN '2014-06-11 08:15:00' BETWEEN StartTime AND EndTime THEN 1 ELSE 0 END + CASE WHEN '2014-06-11 08:45:00' BETWEEN StartTime AND EndTime THEN 0.5 ELSE 0 END) AS H8
, SUM(CASE WHEN '2014-06-11 09:15:00' BETWEEN StartTime AND EndTime THEN 1 ELSE 0 END + CASE WHEN '2014-06-11 09:45:00' BETWEEN StartTime AND EndTime THEN 0.5 ELSE 0 END) AS H9
, SUM(CASE WHEN '2014-06-11 10:15:00' BETWEEN StartTime AND EndTime THEN 1 ELSE 0 END + CASE WHEN '2014-06-11 10:45:00' BETWEEN StartTime AND EndTime THEN 0.5 ELSE 0 END) AS H10
, SUM(CASE WHEN '2014-06-11 11:15:00' BETWEEN StartTime AND EndTime THEN 1 ELSE 0 END + CASE WHEN '2014-06-11 11:45:00' BETWEEN StartTime AND EndTime THEN 0.5 ELSE 0 END) AS H11
, SUM(CASE WHEN '2014-06-11 12:15:00' BETWEEN StartTime AND EndTime THEN 1 ELSE 0 END + CASE WHEN '2014-06-11 12:45:00' BETWEEN StartTime AND EndTime THEN 0.5 ELSE 0 END) AS H12
, SUM(CASE WHEN '2014-06-11 13:15:00' BETWEEN StartTime AND EndTime THEN 1 ELSE 0 END + CASE WHEN '2014-06-11 13:45:00' BETWEEN StartTime AND EndTime THEN 0.5 ELSE 0 END) AS H13
, SUM(CASE WHEN '2014-06-11 14:15:00' BETWEEN StartTime AND EndTime THEN 1 ELSE 0 END + CASE WHEN '2014-06-11 14:45:00' BETWEEN StartTime AND EndTime THEN 0.5 ELSE 0 END) AS H14
, SUM(CASE WHEN '2014-06-11 15:15:00' BETWEEN StartTime AND EndTime THEN 1 ELSE 0 END + CASE WHEN '2014-06-11 15:45:00' BETWEEN StartTime AND EndTime THEN 0.5 ELSE 0 END) AS H15
, SUM(CASE WHEN '2014-06-11 16:15:00' BETWEEN StartTime AND EndTime THEN 1 ELSE 0 END + CASE WHEN '2014-06-11 16:45:00' BETWEEN StartTime AND EndTime THEN 0.5 ELSE 0 END) AS H16
, SUM(CASE WHEN '2014-06-11 17:15:00' BETWEEN StartTime AND EndTime THEN 1 ELSE 0 END + CASE WHEN '2014-06-11 17:45:00' BETWEEN StartTime AND EndTime THEN 0.5 ELSE 0 END) AS H17
, SUM(CASE WHEN '2014-06-11 18:15:00' BETWEEN StartTime AND EndTime THEN 1 ELSE 0 END + CASE WHEN '2014-06-11 18:45:00' BETWEEN StartTime AND EndTime THEN 0.5 ELSE 0 END) AS H18
, SUM(CASE WHEN '2014-06-11 19:15:00' BETWEEN StartTime AND EndTime THEN 1 ELSE 0 END + CASE WHEN '2014-06-11 19:45:00' BETWEEN StartTime AND EndTime THEN 0.5 ELSE 0 END) AS H19
, SUM(CASE WHEN '2014-06-11 20:15:00' BETWEEN StartTime AND EndTime THEN 1 ELSE 0 END + CASE WHEN '2014-06-11 20:45:00' BETWEEN StartTime AND EndTime THEN 0.5 ELSE 0 END) AS H20
, SUM(CASE WHEN '2014-06-11 21:15:00' BETWEEN StartTime AND EndTime THEN 1 ELSE 0 END + CASE WHEN '2014-06-11 21:45:00' BETWEEN StartTime AND EndTime THEN 0.5 ELSE 0 END) AS H21
, SUM(CASE WHEN '2014-06-11 22:15:00' BETWEEN StartTime AND EndTime THEN 1 ELSE 0 END + CASE WHEN '2014-06-11 22:45:00' BETWEEN StartTime AND EndTime THEN 0.5 ELSE 0 END) AS H22
, SUM(CASE WHEN '2014-06-11 23:15:00' BETWEEN StartTime AND EndTime THEN 1 ELSE 0 END + CASE WHEN '2014-06-11 23:45:00' BETWEEN StartTime AND EndTime THEN 0.5 ELSE 0 END) AS H23
FROM Booking
LEFT JOIN Facility
ON Booking.LocationKey = Facility.LocationKey
WHERE
(StartTime >= '2014-06-11 00:00:00' AND
StartTime < '2014-06-12 00:00:00')
OR
(EndTime >= '2014-06-11 00:00:00' AND
EndTime < '2014-06-12 00:00:00')
Group By FacilityID;