SQL 返回空记录的外连接问题

SQL outer join issue for returning null records

DECLARE @Temp TABLE (Region VARCHAR(75))
INSERT INTO @Temp
SELECT distinct classname from x where class = 'y' and date = '12/31/2015'

SELECT *
FROM @Temp T LEFT OUTER JOIN x N ON N.Classname = T.Region where T.Region NOT LIKE '%Cash%'
AND N.[Code] = '785' 
AND N.Horizon = 'year'
AND N.[date] = '12/31/2015'

这必须从 Temp 返回所有 class 名称,包括在 x 中没有记录的名称。至少那是我的意图。 X 没有温度和相同的条件,只有 returns 它有数据的那些。我想要来自 Temp 的所有 class 名称,它们在 X 中也没有条目。它仍然没有那样做。

无法解决。尝试过 NOT EXISTS,Except 和 Outer apply。 None 他们的工作。请帮忙!

您需要将第二个 table 的条件移动到 on 子句中:

SELECT *
FROM @Temp T LEFT OUTER JOIN
     x N
     ON N.Classname = T.Region AND
        N.[Code] = '785' AND
        N.Horizon = 'year' AND
        N.[date] = '2015-12-31'
WHERE T.Region NOT LIKE '%Cash%';

假设 date 存储为日期,请为您的查询使用正确的 ISO 标准日期格式。