#sql-server #sql-server-2012
Вопрос:
Пожалуйста, дайте мне знать, как мы можем достичь этого с помощью приведенного ниже сценария
У меня есть таблица со столбцами
Таблица А
EmpId Name Contact
---------------------
100 AA xxxxx
101 BB yyyyy
102 rr zzzzz
103 jj 1234
104 GG 6789
Таблица В
Id EmpId Product
------------------
1 100 Sample1
2 100 Sample2
3 101 Sample1
4 103 Sample4
Мне нужно получить количество столбцов из таблицы A, присутствующих в таблице 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
Ответ №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;
Комментарии:
1. Я отредактировал вопрос с помощью еще одного сценария. Пожалуйста, дайте мне знать, как мы можем добиться подсчета сейчас, присоединившись к еще одной таблице
2. Я отклонил ваш вопрос. На этом этапе вам следует открыть новый вопрос.