2-й SELECT
выглядит как подмножество первого, так что вы можете сделать
SELECT COUNT(*) - COUNT(CASE
WHEN h_log_stkpnl.op_id LIKE '%STOCK-IN%' THEN 1
END)
FROM h_log_material
LEFT JOIN h_log_stkpnl
ON h_log_stkpnl.MODULE_UNIQUE_ID = h_log_material.MODULE_UNIQUE_ID
WHERE h_log_material.WO_ID = 'E11TMB7M05'
AND h_log_material.mtrl_type = 'BL'
Редактировать
После вашего разъяснения, что вам нужны столбцы, а не COUNT
попробуйте этот
SELECT *
FROM h_log_material
LEFT JOIN h_log_stkpnl
ON h_log_stkpnl.MODULE_UNIQUE_ID = h_log_material.MODULE_UNIQUE_ID
AND h_log_stkpnl.op_id LIKE '%STOCK-IN%'
WHERE h_log_material.WO_ID = 'E11TMB7M05'
AND h_log_material.mtrl_type = 'BL'
AND h_log_material.MODULE_UNIQUE_ID IS NULL
Ваш первый запрос выполняет LEFT JOIN
, но предложение WHERE
на втором эффективно преобразует его во внутреннее соединение.Таким образом, разница между запросами должна заключаться в тех строках, в которых либо нет совпадения в h_log_stkpnl
, либо совпадение не LIKE '%STOCK-IN%'
(я думаю!)