第一张表
ID Desc Effective date Alias
1 abc 12-JAN-10 A1
2 efg 10-FEB-11 A2
3 hij 03-MAR-11 A3
4 klm 05-APR-12 A4
第二张表
Split Date Alias Value
13-JAN-10 A1 2
14-JAN-11 A1 3
09-FEB-11 A2 5
04-MAR-12 A3 7
25-DEC-12 A3 1
21-JUL-13 A4 2
30-NOV-12 A4 3
结果表:
ID Desc Effective date Alias Value
1 abc 12-JAN-10 A1 5 --it got 5 because it sums up values from 2nd table where effective date >split date
2 efg 10-FEB-11 A2 1
3 hij 03-MAR-11 A3 8
4 klm 05-APR-12 A4 5
条件:
对第二个表格中的所有值求和,其中Effective_date>使用生效日期的拆分日期和第一个表中的别名作为第二个表的键。 如果没找到effective_date>拆分日期,然后结果表中的值应为1.
答案 0 :(得分:0)
您可以尝试以下查询吗?
select t1.id, t1.desc, t1.effective_date, t1.alias, nvl(sum(t2.value), 1) value
from table1 t1, table2 t2
where t2.alias (+) = t1.alias
and t2.split_date (+) > t1.effective_date
group by t1.id, t1.desc, t1.effective_date, t1.alias
使用的连接是旧式的,但我认为这可以工作。
答案 1 :(得分:0)
以下是使用left outer join
的方法:
select t1.id, t1.desc, t1.effective_date, t1.alias,
coalesce(sum(t2.value), 1) as value
from table1 t1 left outer join
table2 t2
on t1.alias = t2.alias and
t1.effective_date < t2.split_date
group by t1.id, t1.desc, t1.effective_date, t1.alias;
我将逻辑更改为t1.effective_date < t2.split_date
以匹配问题中的结果,尽管这与您描述的逻辑相反。