【发布时间】:2018-06-12 13:27:30
【问题描述】:
我有这张桌子:
表___Bookings:
|--------|------------|--------------|------------|------------|
| BOO_Id | BOO_RoomId | BOO_ClientId | BOO_DateCI | BOO_DateCO |
|--------|------------|--------------|------------|------------|
| 1 | 9 | 45 | 2018-01-02 | 2018-01-03 |
| 2 | 4 | 46 | 2017-12-30 | 2018-01-07 |
| 3 | 3 | 2 | 2018-12-31 | 2018-01-01 |
| 4 | 9 | 98 | 2018-01-05 | 2018-01-10 |
|--------|------------|--------------|------------|------------|
我希望每天显示出发、到达或内部的预订。
所需的输出应该是这样的:
2017-12-30 = Booking #2 in arrival.
2017-12-31 = Booking #3 in arrival.
= Booking #1 in arrival.
= Booking #2 in house.
2018-01-01 = Booking #3 in departure.
= Booking #2 in house.
2018-01-02 = Booking #1 in arrival.
= Booking #2 in house.
2018-01-03 = Booking #1 in departure.
= Booking #2 in house.
2018-01-04 = Booking #2 in house.
2018-01-05 = Booking #4 in arrival.
= Booking #2 in house.
2018-01-06 = Booking #2 in house.
= Booking #4 in house.
2018-01-07 = Booking #2 in departure.
= Booking #4 in house.
2018-01-08 = Booking #4 in house.
2018-01-09 = Booking #4 in house.
2018-01-10 = Booking #4 in departure.
我已经尝试过的:
SELECT *,
CASE
WHEN BOO_DateCI = '2017-04-01' THEN 'In Arrival'
WHEN BOO_DateCO = '2017-04-30' THEN 'In Departure'
WHEN '2017-04-01' > BOO_DateCI AND '2017-04-01' < BOO_DateCO THEN 'In House'
END
FROM ___Bookings
WHERE BOO_DateCI = '2017-04-01'
OR BOO_DateCO = '2017-04-30'
OR '2017-04-01' BETWEEN BOO_DateCI AND BOO_DateCO;
但我无法获得in house 预订,也无法根据arrival、departure 或in-house 的状态对预订进行分组。
【问题讨论】:
-
您的数据库中的预订状态在哪里?
-
状态由'BOO_DateCI'和'BOO_DateCO'决定。如果
today == BOO_DateCI=> '到达'。如果today == BOO_DateCO=> '出发'。如果today > BOO_DateCI today < BOO_DateCO=> '在内部'。