У меня есть следующая переменная таблицы
DECLARE @insertedTable Table (ServiceId INT)
Я вставляю ServiceId в него из некоторого SQL-запроса,
Теперь мне нужно вставить значения в BranchServices
таблицу с перекрестным соединением @insertedTable
Я написал следующий запрос SQL
INSERT INTO BranchServices
SELECT b.BranchId
,its.ServiceId
,CASE WHEN(SELECT MIN(SortValue) FROM BranchServices WHERE FkBranchId = b.BranchId) IS NOT NULL THEN 0 END
FROM @insertedTable its
CROSS JOIN Branch b where b.IsActive = 1;
Приведенный выше запрос работает нормально, когда таблица @insertedTable
не существует ServiceId
, как и таблица BranchServices
. Поскольку таблицы BranchServices
ServiceId
являются первичными ключами.
Итак, теперь мне нужно проверить, если в таблице BranchServices
уже есть ServiceId
, мне не нужно выполнять следующий запрос, в противном случае,Мне нужно выполнить запрос. Как я могу сделать это с помощью слияния? Если да, то как написать
INSERT INTO BranchServices
SELECT b.BranchId
,its.ServiceId
,CASE WHEN(SELECT MIN(SortValue) FROM BranchServices WHERE FkBranchId = b.BranchId) IS NOT NULL THEN 0 END
FROM @insertedTable its
CROSS JOIN Branch b where b.IsActive = 1;