Вы, кажется, сделали это намного сложнее, чем нужно, если ваши требования верны.Из того, что вы говорите, вам нужно
1) Товары, которые прибыли 2019-01-01 и не были отправлены.
2) Товары, которые прибыли 2019-01-01 и были отправлены нав тот же день.
Есть ряд проблем с вашим текущим SQL, но вы можете получить свой результат намного проще с помощью простого предложения OR:
SELECT A.ITEM, COUNT(*)
FROM ITEMS A
WHERE A.DT_ARRIVAL = '2019-01-01'
AND ( NOT EXISTS (SELECT 1 FROM ISSUED B WHERE A.ID = B.ID)
OR (EXISTS (SELECT 1 FROM ISSUED C WHERE A.ID = C.ID
AND C.ISSUED_DT = A.DT_ARRIVAL)
)
GROUP BY A.ITEM
Дайте мне знать, если я 'мы что-то упустили, но это, кажется, удовлетворяет перечисленным ниже требованиям.
Одна из проблем вашего текущего запроса заключается в том, что вы выполняете левое соединение строк, соответствующих первому требованию, и строк, соответствующих второму требованию.,Они никогда не должны объединяться, и поэтому вы никогда не получите строки / значения для вашего второго требования.В целом, я думаю, что вы запутали себя, используя слишком много ненужных подзапросов и объединений, а затем сделали это еще более запутанным, не используя уникальные псевдонимы, когда вы ссылались на одну и ту же таблицу несколько раз.