我有一个SRC表和STG表,两个表都有一个名为BU的公共字段。我编写了以下查询来计算来自SRC表的记录,其中两个表中的BU和MU都不匹配:
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)
答案 0 :(得分:0)
使用left join
select COUNT (*)
from [dbo].[SRC] t1
left join [dbo].[STG] t2 on t1.BU = t2.BU
where t2.BU is null
答案 1 :(得分:0)
您可以使用左连接和NOT IN功能来获取输出。
order.order_id, order.date, name (for customer), name (for salesperson)
答案 2 :(得分:0)
我认为您希望在ID
和BU
不匹配的MU
找到匹配项。你离开了那个问题,所以我在你的一些评论之间进行了阅读。我怀疑你也只想看到那些计数大于零的人。如果BU
和MU
列中的任何一列可以为空,那么您需要小心这些(例如COALESCE(SRC.BU, '!@#$%') <> COALESCE(STG.BU, '!@#$%')
。)
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