可能为空值的TSQL连接

可能为空值的TSQL连接,sql,sql-server,tsql,stored-procedures,Sql,Sql Server,Tsql,Stored Procedures,我有一个小的存储过程,它正在拉入记录。表中当前有2条记录。其中一个具有a.[manageraproval]的值,而另一个没有。由于连接,如果列没有值,则不会显示整个记录,而只是一个空值 无论其连接的列是否有值,仍然显示数据的好方法是什么 SELECT A.[id], A.[empID], A.[firstName], A.[lastName], A.[emailAddress], B.[FirstName] + ' ' +B.

我有一个小的存储过程,它正在拉入记录。表中当前有2条记录。其中一个具有
a.[manageraproval]
的值,而另一个没有。由于连接,如果列没有值,则不会显示整个记录,而只是一个空值

无论其连接的列是否有值,仍然显示数据的好方法是什么

SELECT A.[id],
       A.[empID],
       A.[firstName],
       A.[lastName],
       A.[emailAddress],
       B.[FirstName] + ' ' +B.[LastName] + ' (' +B.[ntid]+ ')' as managerApproval
FROM   tuitionSubmissions as A
JOIN empTable AS B
ON B.[empID] = A.[managerApproval]
FOR    XML PATH ('data'), TYPE, ELEMENTS, ROOT ('root');

使用
左外部联接
-如果值存在于第二个表中,它将联接该值上的表,否则它将返回
NULL
,用于从第二个表中选择
中的任何值

SELECT A.[id],
       A.[empID],
       A.[firstName],
       A.[lastName],
       A.[emailAddress],
       B.[FirstName] + ' ' +B.[LastName] + ' (' +B.[ntid]+ ')' as managerApproval
FROM   tuitionSubmissions as A
LEFT OUTER JOIN empTable AS B
ON B.[empID] = A.[managerApproval]
FOR    XML PATH ('data'), TYPE, ELEMENTS, ROOT ('root');

对于这些记录,
managerApproval
将为
NULL

似乎您需要左连接:

  SELECT A.[id],
       A.[empID],
       A.[firstName],
       A.[lastName],
       A.[emailAddress],
       B.[FirstName] + ' ' +B.[LastName] + ' (' +B.[ntid]+ ')' as managerApproval
    FROM   tuitionSubmissions as A
    Left JOIN empTable AS B
    ON B.[empID] = A.[managerApproval]
   FOR    XML PATH ('data'), TYPE, ELEMENTS, ROOT ('root');

将您的
Join
更改为
Left Join