SQL Server 查询 : Using JOIN to include NULL values

标签 sql join null sql-server-2012

我需要以下 SQL Server 查询的帮助,其中 a.TAProfileID 和 c.CountryCode 列在数据库中具有“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

最佳答案

以退货或生产NULL您必须使用的值 LEFT JOIN s。

所以,你的查询应该是这样的:

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

关于SQL Server 查询 : Using JOIN to include NULL values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24227728/

相关文章:

mysql:为什么左连接不使用索引?

c - 有必要将 NULL 转换为结构指针类型以在 C 中进行赋值/比较吗?

Php/Pdo - 获取每一行的内容

sql - 使用 SQL CASE/WHEN 输出进行计算

java - 无法在 Antlr3 SQL 语法中提供主机变量

mysql - 优先考虑 MySQL 中的左连接行

mysql - 通过在彼此之间嵌套子查询来解决 MySQL 中 61 个表 JOIN 的限制

mysql - 消息收件箱的 SQL

vb.net - 检查变量是否为 NULL

hadoop - 在发送到 channel 之前删除空的 Flume 事件