【发布时间】:2009-10-13 12:50:15
【问题描述】:
假设我有 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 获取AMOUNT,否则,我从STOCK 表获取AMOUNT。
请注意,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。
【问题讨论】: