0

我正在尝试创建一个不包括连接的视图:

在此处输入图像描述

但是有一个冒号,我也想在 WHERE 上做一个。在这种情况下,它:

WHERE table.colon != 'x';

出于这个原因,我尝试过:

WHERE A.key IS NULL AND table.colon != 'x'; 

但是当我运行它时,运行它时没有显示任何数据。谁能帮我解决这个问题?

先谢谢了。

更新,这是我要运行的查询:

SELECT     dbo.DimServere.Servernavn, dbo.DimServere.Serverstatus, dbo.IderaPatchAnalyzer.IP_Adresse, dbo.IderaPatchAnalyzer.Release_, dbo.IderaPatchAnalyzer.Level_, 
                      dbo.IderaPatchAnalyzer.Edition_, dbo.IderaPatchAnalyzer.Build, dbo.IderaPatchAnalyzer.Updates_Available, dbo.IderaPatchAnalyzer.Supported_, 
                      dbo.IderaPatchAnalyzer.Support_Status
FROM         dbo.DimServere RIGHT OUTER JOIN
                      dbo.IderaPatchAnalyzer ON dbo.DimServere.TcpIpAddress = dbo.IderaPatchAnalyzer.IP_Adresse AND dbo.DimServere.Serverstatus <> 'Disposed/Retired'
WHERE     (dbo.DimServere.TcpIpAddress IS NULL)
4

2 回答 2

1

将条件移动到 JOIN 子句中。

SELECT *
FROM 
    Table1
    LEFT JOIN Table2
        ON Table1.Field = Table2.Field AND
        Table2.OtherField != 'x'
WHERE Table2.Field IS NULL
于 2015-11-18T00:42:54.850 回答
0

这个想法是正确的。但是,我猜该列中有null值。dbo.DimServere.Serverstatus因为您使用的是比较运算符,所以这个条件总是失败(与null未知的比较)并且join条件不满足,(因为您正在AND使用另一个条件)并且您没有得到任何结果。

要克服这一点,isnull(dbo.DimServere.Serverstatus, 'somevalue')请在join条件下使用。

SELECT dbo.DimServere.Servernavn, dbo.DimServere.Serverstatus,
dbo.IderaPatchAnalyzer.IP_Adresse, dbo.IderaPatchAnalyzer.Release_,
dbo.IderaPatchAnalyzer.Level_, dbo.IderaPatchAnalyzer.Edition_, 
dbo.IderaPatchAnalyzer.Build, dbo.IderaPatchAnalyzer.Updates_Available,    
dbo.IderaPatchAnalyzer.Supported_, dbo.IderaPatchAnalyzer.Support_Status
FROM dbo.DimServere RIGHT OUTER JOIN
dbo.IderaPatchAnalyzer ON dbo.DimServere.TcpIpAddress = dbo.IderaPatchAnalyzer.IP_Adresse 
AND isnull(dbo.DimServere.Serverstatus, 'somevalue') <> 'Disposed/Retired' 
WHERE dbo.DimServere.TcpIpAddress IS NULL
于 2015-11-18T01:03:14.090 回答