目前,要找出 SQL 中连接失败的值,我使用以下方法
SELECT DISTINCT ACC.Name
,ACC.Area
,CASE
WHEN A.Area IS NULL AND N.Name IS NULL
THEN 'Name and Area do not match'
WHEN A.Area IS NULL
THEN 'Area does not match'
WHEN N.Name IS NULL
THEN 'Name is null'
ELSE
'Yes'
END as IsTopAccount
FROM Test.dbo.Accounts ACC
LEFT JOIN Test.dbo.TopAccounts A ON A.Area = ACC.Area
LEFT JOIN Test.dbo.TopAccounts N ON N.Name = ACC.Name
在上面,一个帐户必须TopAccounts
在区域和名称上都加入到表中。我需要这两个连接来测试 case 语句中的每个条件。
是否可以更有效地测试 case 语句中的每个条件,也许用一个LEFT JOIN
而不是两个单独LEFT JOIN
的?
看到这个sql fiddle