【问题标题】:Sql query to get count of matched and not matched recordsSql查询以获取匹配和不匹配记录的计数
【发布时间】:2021-06-12 12:22:59
【问题描述】:

请让我知道我们如何通过以下方案实现这一目标

我有一个带有列的表格

表 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

我需要从 TableA 中获取表 B 中存在的列数(不同的)并且不存在于表 B 中与 EmpId 列匹配

我尝试了以下方法

SELECT count(*) 
FROM Table A ta
WHERE ta.EmpId NOT IN (SELECT DISTINCT(tb.EmpId) 
                       FROM Table B tb) 

我只计算了哪些行不存在。

如何编写单个查询来获取匹配和不匹配的所有行的计数?

期望的输出:

Matched NotMatched
------------------
3         2

【问题讨论】:

    标签: sql-server sql-server-2012


    【解决方案1】:

    在聚合中使用左连接:

    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;
    

    【讨论】:

    • 我已经用另外一个场景编辑了这个问题。请让我知道我们现在如何通过再加入一张桌子来实现计数
    • 我已经回复了你的问题。此时您应该提出一个新问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-21
    • 2015-04-19
    • 2021-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-18
    相关资源
    最近更新 更多