Sql 查询以获取匹配和不匹配记录的计数
Sql query to get count of matched and not matched records
请告诉我如何在以下情况下实现此目的
我有一个 table 列
Table一个
EmpId Name Contact
---------------------
100 AA xxxxx
101 BB yyyyy
102 rr zzzzz
103 jj 1234
104 GG 6789
Table B
Id EmpId Product
------------------
1 100 Sample1
2 100 Sample2
3 101 Sample1
4 103 Sample4
我需要从 TableA 中获取 TableB 中存在的列数(不同)并且不存在于 TableB 中匹配 EmpId
列
我尝试了以下方法
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;
请告诉我如何在以下情况下实现此目的
我有一个 table 列
Table一个
EmpId Name Contact
---------------------
100 AA xxxxx
101 BB yyyyy
102 rr zzzzz
103 jj 1234
104 GG 6789
Table B
Id EmpId Product
------------------
1 100 Sample1
2 100 Sample2
3 101 Sample1
4 103 Sample4
我需要从 TableA 中获取 TableB 中存在的列数(不同)并且不存在于 TableB 中匹配 EmpId
列
我尝试了以下方法
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;