我正在使用 SQL Server 2014
. 我有一个表(t1),其中包含取消预订及其等效重新预订的ID列表。
表格摘录 T1
:
CancelledID Re-bookingID
301 754
387 801
400 900
...
每个cancelleId在re bookingid列中都有一个唯一的等价项。
我还有一张table( T2
)其中包含所有BookingID的列表以及与每个id相关的附加信息。此表的摘录如下所示:
BookingID MonthOfStay RoomNights
...
301 2019-03-01 10
387 2019-04-01 7
400 2019-03-01 5
754 2019-08-01 10
801 2019-09-01 3
900 2019-07-01 5
900 2019-08-01 4
...
我需要一个t-sql查询,它将为我提供以下输出:
BookingID Cancelled_MonthOfStay Re-booking_MonthOfStay RoomNights
301 2019-03-01 10
387 2019-04-01 7
400 2019-03-01 5
754 2019-08-01 10
801 2019-09-01 3
900 2019-07-01 5
900 2019-08-01 4
如您所见,重新预订房间的时间可以超过2个月,并增加房间住宿。
我在考虑两个表之间的“连接”,但是我被用于“连接”的逻辑卡住了(如果这是解决问题的正确方法的话)。
注意:最后要考虑的是使用此数据构建一个矩阵,其中取消的\u monthofstay作为行,重新预订的\u monthofstay作为列。此矩阵中的值将是总的roomnights。
任何帮助都将不胜感激。
2条答案
按热度按时间fafcakar1#
似乎最简单的方法是在
Cancellations
“表,然后使用CASE
表达式以在相应列中显示数据:jmp7cifd2#
可以将t1表左键联接到t2表两次。然后使用case将右边的列留空。