Допустим, у меня есть 2 таблицы с одинаковой структурой: STOCK
и NEW_STOCK
.
Эти таблицы имеют первичный ключ, состоящий из (ID_DATE, ID_SELLER, ID_INVOICE, ID_DOC).
Теперь мне нужно получить для каждого (ID_DATE, ID_SELLER, ID_INVOICE, ID_DOC) значение суммы (поле AMOUNT) относительно этого требования:
Если запись присутствует в NEW_STOCK
, я получаю СУММУ из NEW_STOCK
, в противном случае я получаю СУММУ из таблицы STOCK
.
Обратите внимание, что ID_DATE и ID_SELLER являются входными данными для запроса, то есть запрос, который рассматривает только таблицу STOCK
, будет выглядеть следующим образом:
select AMOUNT, ID_DATE, ID_SELLER, ID_INVOICE
from STOCK
where ID_DATE = 1
and ID_SELLER = 'SELL1';
STOCK
:
+---------+-----------+------------+--------+--------+
| ID_DATE | ID_SELLER | ID_INVOICE | ID_DOC | AMOUNT |
+---------+-----------+------------+--------+--------+
| 1 | SELL1 | IN1 | DOC1 | 100 |
| 1 | SELL1 | IN2 | DOC2 | 50 |
| 1 | SELL1 | IN3 | DOC3 | 42 |
+---------+-----------+------------+--------+--------+
NEW_STOCK
+---------+-----------+------------+--------+--------+
| ID_DATE | ID_SELLER | ID_INVOICE | ID_DOC | AMOUNT |
+---------+-----------+------------+--------+--------+
| 1 | SELL1 | IN2 | DOC2 | 12 |
+---------+-----------+------------+--------+--------+
Тогда я должен получить следующие результаты:
+---------+-----------+------------+--------+--------+
| ID_DATE | ID_SELLER | ID_INVOICE | ID_DOC | AMOUNT |
+---------+-----------+------------+--------+--------+
| 1 | SELL1 | IN1 | DOC1 | 100 |
| 1 | SELL2 | IN2 | DOC2 | 12 |
| 1 | SELL3 | IN3 | DOC3 | 42 |
+---------+-----------+------------+--------+--------+
ps: я работаю над Oracle 10.