问题描述
请让我知道我们如何通过以下场景实现这一目标
表A
EmpId Name Contact
---------------------
100 AA xxxxx
101 BB yyyyy
102 rr zzzzz
103 jj 1234
104 GG 6789
表 B
Id EmpId Product
------------------
1 100 Sample1
2 100 Sample2
3 101 Sample1
4 103 Sample4
我需要从表 B 中获取表 A 中存在的列数(不同),但不存在于与 EmpId
列匹配的表 B 中
我尝试了以下方法
SELECT count(*)
FROM Table A ta
WHERE ta.EmpId NOT IN (SELECT disTINCT(tb.EmpId)
FROM Table B tb)
我只计算哪些行不存在。
所需的输出:
Matched NotMatched
------------------
3 2
解决方法
使用带聚合的左连接:
SELECT
COUNT(DISTINCT b.EmpId) AS Matched,COUNT(CASE WHEN b.EmpId IS NULL THEN 1 END) AS NotMatched
FROM TableA a
LEFT JOIN TableB b
ON b.EmpId = a.EmpId;