2016-07-14 57 views
-1

我有一個SRC表和STG表,兩個表都有一個叫做BU的公共字段。我寫了下面的查詢數從SRC表中的記錄,其中BU和MU兩個表中的不匹配:查詢來計算不同於2個表的記錄

select COUNT (*) from [dbo].[SRC] 
    where (select Name from [dbo].[SRC] t1, [dbo].[STG] t2 
    where t1.BU <> t2.BU and t1.MU <> t2.MU) 
+3

你忘了這個問題嗎? –

回答

0

您可以使用LEFT JOIN和NOT IN函數來獲取輸出。

SELECT COUNT (*) FROM [dbo].[SRC] s 
    WHERE s.BU NOT IN (SELECT BU FROM dbo.STG); 
0

我認爲你在尋找通過ID找到匹配,其中BUMU不匹配。你沒有理會這個問題,所以我正在閱讀你的一些評論。我懷疑你也只想看看那些數量大於零的人。如果任何BUMU列都爲空,那麼你就必須要小心那些(例如,COALESCE(SRC.BU, '[email protected]#$%') <> COALESCE(STG.BU, '[email protected]#$%')

select ID, count(STG.ID) as CountDissimilar 
from 
    dbo.SRC left outer join dbo.STG 
     on STG.ID = SRC.ID and STG.BU <> SRC.BU and SRC.MU <> SRC.MU 
group by SRC.ID 
having count(STG.ID) > 0