我有一個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)
我有一個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)
您可以使用LEFT JOIN和NOT IN函數來獲取輸出。
SELECT COUNT (*) FROM [dbo].[SRC] s
WHERE s.BU NOT IN (SELECT BU FROM dbo.STG);
使用left join
select COUNT (*)
from [dbo].[SRC] t1
left join [dbo].[STG] t2 on t1.BU = t2.BU
where t2.BU is null
我認爲你在尋找通過ID
找到匹配,其中BU
和MU
不匹配。你沒有理會這個問題,所以我正在閱讀你的一些評論。我懷疑你也只想看看那些數量大於零的人。如果任何BU
和MU
列都爲空,那麼你就必須要小心那些(例如,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
你忘了這個問題嗎? –