Строка фильтра SQL / Получить количество строк, если данные присутствуют в столбце между двумя таблицами

#sql #sql-server

#sql #sql-сервер

Вопрос:

Я использую SQL SERVER 2017

Допустим, у нас есть следующие две таблицы

ПОСТАВЩИК

таблица 1

МАСТЕР

таблица 2

Я хочу получить количество всех идентификаторов от поставщика, если значение column_b для master присутствует в выводе поставщика, должно быть таким

ВЫВОД

таблица 3

Комментарии:

1. Вы что-нибудь пробовали? Это выглядит довольно просто JOIN и COUNT , если честно. Почему ваша попытка не сработала? Примечание: объекты имеют строки и столбцы, которые имеют значение, а не «записи».

2. Кроме того, в столбце Количество записей, совпадающих, как должны быть достигнуты эти значения? Ничто в таблицах поставщика примеров и основных таблицах не объясняет значения 1, 0 и 0.

Ответ №1:

Коррелированный подзапрос выглядит подходящим. Ваше описание очень расплывчатое (должен ли идентификатор также совпадать?), Но что-то вроде этого:

 select m.*,
       (select count(*)
        from provider p
        where p.id = m.id and p.column_b = m.column_b
       )
from master m;
 

Комментарии:

1. Нам нужно сопоставить две таблицы на основе идентификатора, и если столбец присутствует, то я хочу подсчитать, сколько совпадений

2. @SaiVinayPalakodeti . , , Если это делает то, что вы хотите, вы можете принять ответ.

Ответ №2:

Вы можете использовать left join следующее:

 Select m.id, count(p.id) as matched
  From master m left join provider p
    On p.id = m.id and p.column_b = m.column_b
 Group by m.id