我使用SQL Server 2014和我有一個使用3個表給我與住客,保留下面的輸出中的簡單查詢:如何修改此SQL查詢以獲取位於其他表中的信息?
查詢看起來是這樣的:
USE MyDatabase
SELECT a.ResID, a.Name, a.Property, c.ArrivalDate,c.DepartureDate,c.ConfNum,
d.CHAR07, c.StatusCode,c.CreatedOn, c.UpdatedBy, c.CreatedBy
FROM GuestStaySummary a
left join GuestNameInfo b on b.ResID = a.ResID
left join reservationstay c on c. ResID = a. ResID
WHERE a.PrimaryGuest = '+'
輸出是如下所示:
ResID Property Name ArrivalDate DepartureDate ConfNum StatusCode CreatedOn UpdatedBy CreatedBy
125 ABC Jones 2015-08-20 2015-08-27 659874 CONFIRMED 2015-03-10 AP01 AP01
由於系統上的應用程序升級,所有預留都被取消並重新創建。因此,進入上述成了如下:
ResID Property Name ArrivalDate DepartureDate ConfNum StatusCode CreatedOn UpdatedBy CreatedBy
125 ABC Jones 2015-08-20 2015-08-27 659874 CANCELED 2015-03-10 R5 AP01
358 ABC Jones 2015-08-20 2015-08-27 742651 CONFIRMED 2015-05-15 R5 AP01
原來ResID
125現在有一個StatusCode
爲「取消」,並已與新的ResId
和新ConfNum
重新創建。
ResId
125(現Res ID 358)的原始CreatedOn
(即2015-03-10)對我的分析目的非常重要。換句話說,我需要鏈接ResID
358的CreatedOn
與2015-03-10而不是它的新的CreatedOn
這是2015-05-15。
鏈接這兩個條目的唯一方法是使用已存儲在稱爲的表中的名爲CHAR07
的列中的「原始」ConfNum
。
我已經修改我的查詢如下檢索「取消」保留所有的名單和他們的等價物「新的」保留:
USE MyDatabase
SELECT a.ResID, a.Name, a.Property, c.ArrivalDate,c.DepartureDate,c.ConfNum,
d.CHAR07 AS ‘Original ConfNum’, c.StatusCode,c.CreatedOn, c.UpdatedBy, c.CreatedBy
FROM GuestStaySummary a
left join GuestNameInfo b on b.ResID = a.ResID
left join reservationstay c on c. ResID = a. ResID
left join P5RESERVATIONSTAY d on d.RSY_RESERVATIONSTAYID = a.ResID
left join P5RESERVATIONSTAY d2 on d2.CHAR07 = c.ConfNum
WHERE b.PrimaryGuest = '+'
輸出如下內容:
ResID Property Name ArrDate DepDate ConfNum Original ConfNum StatusCode CreatedOn UpdatedBy CreatedBy
125 ABC Jones 2015-08-20 2015-08-27 659874 NULL CANCELED 2015-03-10 R5 AP01
358 ABC Jones 2015-08-20 2015-08-27 742651 659874 CONFIRMED 2015-05-15 R5 AP01
它可以完成這項工作,但我需要在Excel中使用VLOOKUP來獲取原始的CreatedOn。
我想我的SQL查詢給我下面的輸出:
ResID Property Name ArrDate DepDate ConfNum Original ConfNum StatusCode CreatedOn OriginalCreatedOn UpdatedBy CreatedBy
358 ABC Jones 2015-08-20 2015-08-27 742651 659874 CONFIRMED 2015-05-15 2015-03-10 R5 AP01
我怎樣才能做到這一點?
不確定爲什麼要使用所有左連接。一旦過濾了'PrimaryGuest',無論如何您都有效地獲得了內連接。你也加入到'd2'中,但是不要使用它的任何一列,我真的不明白爲什麼你一開始就使用這個表格兩次。 – shawnt00
我加入到d2的邏輯,它會幫助我獲取原始的CreatedOn,並將其與「新」預訂相匹配,但我被困在我的編碼的這個級別。所以,我把它留在那裏。 – user3115933