У меня есть запрос, который в основном выполняет что-то вроде этого:
select a, b, c
from tab
where tab.state = 'A'
minus
select a, b, c
from tab
where tab.state = 'B'
В этом примере a
, b
и c
являются ключевыми полями этой таблицы. state
также является частью ключа, и я пытаюсь найти ситуации, когда существует запись в состоянии A, а не в состоянии B. Есть еще одно поле (не в ключе), о котором я хотел бы сообщить value
, это может отличаться для одной и той же записи в разных штатах. Пример:
a b c state value
---------------------
1 1 1 A 12
1 2 2 A 1002
1 3 9 A 43
1 1 1 B 17.34
1 2 2 B 1002
В данном случае меня интересует строка, ключ которой равен 1,3,9
, где состояние равно A. Я также хотел бы получить значение столбца value
, но если я попытаюсь:
select a, b, c, value
from tab
where tab.state = 'A'
minus
select a, b, c, value
from tab
where tab.state = 'B'
То, что я вернул бы, это две строки:
a b c value
----------------
1 1 1 12
1 3 9 43
По сути, я хочу иметь value
в наборе результатов, но не участвовать в minus
. Я чувствую, что упускаю что-то очевидное здесь, но, может быть, я слишком устала, чтобы это понять ...;)