2014-06-15 16 views
3

我需要以下SQL Server查詢幫助,其中列a.TAProfileID和c.CountryCode在數據庫中具有「NULL」值。SQL Server查詢:使用JOIN包含NULL值

我想我的JOIN語句返回它們存在的「NULL」值。

SELECT 
a.ReservationStayID AS 'Reservation Id', 
a.PMSConfirmationNumber as 'PMS No', 
a.CreatedOn AS 'Date Created', 
a.ArrivalDate AS 'Date of Arrival', 
a.DepartureDate AS 'Date of Departure', 
a.TAProfileID AS 'TA Id', 
a.StatusCode AS 'Status', 
b.PropertyCode AS 'Hotel', 
c.Name AS 'Travel Agency', 
c.CountryCode AS 'Market Code', 
d.CountryName AS 'Mkt' 

FROM ReservationStay a 

inner JOIN GuestStaySummary b ON a.ReservationStayID = b.ReservationStayID 
inner JOIN TravelAgency c ON a.TAProfileID = c.TravelAgencyID 
inner JOIN Market d ON c.CountryCode = d.CountryCode 

回答

12

爲了回報或產生NULL值,你將不得不使用LEFT JOIN秒。

所以,你的查詢應該是這樣的:

SELECT 
    a.ReservationStayID AS 'Reservation Id' 
    ,a.PMSConfirmationNumber AS 'PMS No' 
    ,a.CreatedOn AS 'Date Created' 
    ,a.ArrivalDate AS 'Date of Arrival' 
    ,a.DepartureDate AS 'Date of Departure' 
    ,a.TAProfileID AS 'TA Id' 
    ,a.StatusCode AS 'Status' 
    ,b.PropertyCode AS 'Hotel' 
    ,c.NAME AS 'Travel Agency' 
    ,c.CountryCode AS 'Market Code' 
    ,d.CountryName AS 'Mkt' 
FROM ReservationStay a 
    INNER JOIN GuestStaySummary b ON a.ReservationStayID = b.ReservationStayID 
    LEFT JOIN TravelAgency c ON a.TAProfileID = c.TravelAgencyID 
    LEFT JOIN Market d ON c.CountryCode = d.CountryCode 
+0

出色的作品! :-) – user3115933

+7

外連接不使用現有的NULL值進行匹配。當匹配不存在時,它們會生成NULL值。 –