Oracle SQL Запрос на основе UNION - PullRequest
0 голосов
/ 22 апреля 2020

env: Oracle 12 c

У меня есть запрос в Oracle, который является СОЮЗОМ между двумя таблицами: TABLE_A и TABLE_B.

select ID as COL_A,
       VAL_B as COL_B,
       VAL_C as COL_C,
       VAL_D as COL_D,
       VAL_E as COL_E
from   TABLE_A
where  VAL_E = 'XYZ12'
union
select NULL as COL_A,
       NULL_B as COL_B,
       VAL_C as  COL_C,
       NULL as COL_D,
       VAL_E as COL_E
from   TABLE_B
where  VAL_E = 'XYZ12'
and    ?????

COL_A  COL_B  COL_C  COL_D COL_E
------ ------ ------ ----- -----
123    REQ1   REQ2   REQ3  XYZ12
              REQ2         XYZ12

На основе запрос выше, и я застрял в том, что если существует запись с 'XYZ12' and 'REQ1', то я хочу только вернуть эту одну запись, в противном случае вернуть только вторую запись, т. е. там, где существует 'XYZ12', но COL_B IS NULL

. первичная запись является первой, если она существует в TABLE_A. Исходя из моих критериев, если она не существует, то возвращает только вторую запись из TABLE_B.

1 Ответ

1 голос
/ 22 апреля 2020

Судя по данным и запросу в вашем вопросе, table_a может содержать не более одной строки. Следовательно, вы можете просто добавить:

from TABLE_B 
where VAL_E = 'XYZ12' and
      not exists (select 1 from table_a a)

Если вы хотите проверить заданные значения c в table_a, тогда вы можете добавить фильтр в подзапрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...