вставить в таблицу ниже PS_VNDR_ADDR_SCROL
[...] где не уже есть строка в таблице [...] PS_VNDR_ADDR_SCROL
, которая имеет SEQ_NUM
равныйдо 2 для того же VENDOR_ID
Ваш подход с использованием NOT EXISTS
выглядит нормально, однако я думаю, что для соответствия вашей спецификации коррелированный подзапрос должен быть записан:
SELECT VENDOR_ID
FROM PS_VNDR_ADDR_SCROL B
WHERE B.VENDOR_ID = A.VENDOR_ID AND SEQ_NUM = 2
Вместо:
SELECT VENDOR_ID
FROM PS_VNDR_ADDR_SCROL B
WHERE B.VENDOR_ID = A.VENDOR_ID AND SEQ_NUM <> 2
Следовательно, попробуйте:
INSERT PS_VNDR_ADDR_SCROL
SELECT
'SHARE',
A.VENDOR_ID,
2,
'HOME',
'BUSN',
''
FROM #DepWork2 A
WHERE NOT EXISTS (
SELECT 1
FROM PS_VNDR_ADDR_SCROL B
WHERE B.VENDOR_ID = A.VENDOR_ID AND SEQ_NUM = 2
)
Примечание: синтаксическая ошибка во втором запросе происходит из этой части кода SQL:
...
WHERE NOT IN (
SELECT VENDOR_ID
...
)
Необходимо указать столбец слева от условия NOT IN
.Вероятно, это должно быть:
...
WHERE A.VENDOR_ID NOT IN (
SELECT VENDOR_ID
...
)
Примечание: второй запрос также должен иметь условие SEQ_NUM = 2
вместо SEQ_NUM <> 2
в коррелированном подзапросе.