如何解决Sql查询以获取匹配和不匹配记录的计数
请让我知道我们如何通过以下场景实现这一目标
表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;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。