我正在使用sql server 2014。我正在处理一个查询,我想从两个特定的表中提取信息来创建最终的输出。
两个表的摘录( Rebookings
以及 ResaList
)如下所示。
rebookings表(每个CanceleDid都有相应的rebookingid):
CancelledID RebookingID
102 541
250 351
129 800
...
列表:
ID Property ArrivalDate RN
100 X 2020-05-22 9
102 X 2020-03-05 7
250 D 2020-04-12 10
129 E 2020-03-15 8
351 D 2020-09-23 5
541 X 2020-06-01 7
800 E 2020-07-11 8
...
这是我想要的结果:
ID Property ArrivalDate RN RebookingID Rebooking_ArrivalDate Rebooking_RN Tag
102 X 2020-03-05 7 541 2020-06-01 7 Cancelled
250 D 2020-04-12 10 351 2020-09-23 5 Re-booked
129 E 2020-03-15 8 800 2020-07-11 8 Re-booked
这就是我目前所做的:
USE [MyDatabase]
select
a.[ID],
a.[Property],
a.[Arrival Date],
a.[RN],
b.[RebookingID],
(CASE WHEN a.[ID] in (SELECT [CancelledID] FROM [Rebookings]) THEN 'Re-booked'
ELSE 'Cancelled'
END) as [Tag]
from [ResaList] a
LEFT JOIN [Rebookings] b on b.[CancelledID] = a.[ID]
where a.[ID] in (SELECT [CancelledID] FROM [Rebookings])
GROUP BY a.[ID], a.[Property], a.[ArrivalDate], b.[RebookingID]
我被困在如何带来 Rebooking_ArrivalDate
以及 Rebooking_RN
输入上述输出。任何帮助都将不胜感激。
3条答案
按热度按时间yr9zkbsy1#
我在SQLServer中尝试过这个。
rhfm7lfc2#
在内部查询中使用select查找现有记录是非常糟糕的方法。在更大的table上,你会很痛苦。这是一个紧凑而有效的方法-
qoefvg9y3#
可以使用别名选择同一个表两次。