Ниже приведены образцы записей в 2 таблицах
Таблица людей
Per_Id + Per_type
--------------------------------------------
000001 SINGULAR
000002 COLLECTIVE
000003 INSTITUTION
000004 INSTITUTION
000005 SINGULAR
Таблица символов человека
Per_Id + Char_Type + Char_Val
-------------------------------------------------------------------------------
000002 STAT_TY SUSPENSION
000002 STAT COMPLETE
000003 STAT_TY SUSPENSION
000003 STAT COMPLETE
000004 STAT_TY CESSATION
000004 STAT COMPLETE
000005 STAT_TY DEATH
000005 STAT PENDING
Требование состоит в том, что мне нужно выбрать людей со следующими условиями:
- Человек, у которого нет записи в таблице Person Char (Работает нормально)
- Человек, у которого есть запись в таблица символов, но значение char STAT НЕ ЗАВЕРШЕНО (Работает нормально)
- Человек типа INSTITUTION, у которого есть char со значением SUSPENSION
В приведенной выше таблице идентификаторы людей, возвращенные из запрос:
000001 (No record in char table)
000005 (The value of STAT char is not COMPLETE)
000003 (Institution person and char value is SUSPENSION)
Ниже приведен запрос, в котором мне нужна помощь в предложении для выбора записей, удовлетворяющих пункту 3.
SELECT P.PER_ID,
C.CHAR_VAL, C1.CHAR_VAL
FROM PERSON_TBL P
LEFT OUTER JOIN CHAR_TBL C ON C.PER_ID = P.PER_ID AND C.CHAR_TYPE = 'STAT_TY'
LEFT OUTER JOIN CHAR_TBL C1 ON C1.PER_ID = P.PER_ID AND C1.CHAR_TYPE = 'STAT'
WHERE
1=1
AND NVL(C.CHAR_VAL,' ') NOT IN ('CESSATION','DEATH')
AND NVL(STCS.SRCH_CHAR_VAL,' ') NOT IN ('COMPLETE')
AND ***need clause for selecting person of type SINGULAR and with char SUSPENSION***