#sql #sql-server
#sql #sql-сервер
Вопрос:
Я использую SQL SERVER 2017
Допустим, у нас есть следующие две таблицы
ПОСТАВЩИК
МАСТЕР
Я хочу получить количество всех идентификаторов от поставщика, если значение column_b для master присутствует в выводе поставщика, должно быть таким
ВЫВОД
Комментарии:
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