Хммм ....
Я считаю Ваш запрос может быть переписан следующим образом:
WITH Allowed_Rows (houseKey, dropStatus, ipApStat, indicator)
as (SELECT a.HSE_KEY_HSE, a.DROP_STAT_HSE,
b.TAP_STAT_HSL, b.LOB_IND_HSL
FROM OPS$SEA.HSE_BASE as a
JOIN OPS$SEA.HSL_LOB as b
ON b.HSE_KEY_HSL = a.HSE_KEY_HSE
AND b.LOB_IND_HSL IN ('I', 'C', 'T')
AND b.TAB_STAT_HSL IN ('0', '2')
JOIN OPS$SEA.OOR_Order_Open as c
ON c.HSE_KEY_OOR = a.HSE_KEY_HSE
AND c.ORD_STAT_OOR <> '0'
WHERE a.DROP_STAT_HSE = '1')
SELECT houseKey, dropStatus, ipApStat
FROM Allowed_Rows as a
WHERE a.indicator = 'I'
AND EXISTS (SELECT '1'
FROM Allowed_Rows as b
WHERE b.houseKey = a.houseKey
AND b.indicator = 'C')
AND EXISTS (SELECT '1'
FROM Allowed_Rows as b
WHERE b.houseKey = a.houseKey
AND b.indicator = 'T')
Вы не правильно квалифицировали некоторые из вашихтаблиц, и использовал один и тот же псевдоним для нескольких таблиц (что, как я удивлен, не генерировало синтаксической ошибки), поэтому я должен был высказать предположение относительно того, где на самом деле принадлежат вещи.Возможны несколько других вариантов, в зависимости от других (не перечисленных) требований и ограничений.
И почему и как вам нужно возвращать «другие» значения TAP_STAT_HSL
?Вам нужны все возможные комбинации?Значение строки для B
или C
вместо из A
?Что?