计算两个不同表中两行之间的差异

Sri*_*yer 4 sql oracle oracle11g

我有两个表格,结构如下

表一

?????????????????????????????
? ID ?   Date    ? value ?  ?
?????????????????????????????
?  1 ? 1/1/2015  ?   234 ?  ?
?  2 ? 1/20/2015 ?   267 ?  ?
?  3 ? 1/25/2015 ?   270 ?  ?
?????????????????????????????

第二张桌子

??????????????????????????
? start_date ? end date  ?
??????????????????????????
? 1/1/2015   ? 1/20/2015 ?
? 1/20/2015  ? 1/25/2015 ?
??????????????????????????

我的输出必须是

???????????????????????????????????????
? start_date ? end date  ? difference ?
???????????????????????????????????????
? 1/1/2015   ? 1/20/2015 ?         33 ?
? 1/20/2015  ? 1/25/2015 ?          3 ?
???????????????????????????????????????

所以这里我必须根据日期将第二个表连接到第一个表,然后计算列中两个值(对应于日期)之间的差异,然后在一个sql查询中显示它.

问题是我无法在一个查询中加入所有这些并将它们一起显示.

这就是我的目标

select start_date, end_date, ((SELECT
                    table_one.value
                FROM
                    table_one, 
                    table_two 
                WHERE 
                    table_one.date= table_two.end_date(+)
                ) - (
                SELECT
                    table_one.value
                FROM
                    table_one, 
                    table_two 
                WHERE 
                    table_one.date = table_two.start_date(+)
                ))from table_two,table_one where table_two.start_date(+)=table_one.date
Run Code Online (Sandbox Code Playgroud)

我正在使用上述查询获得ORA-01427.我做错了什么,如何实现结果?

Gor*_*off 6

只需使用joins:

select t2.start_date, t2.end_date, (t1e.value - t1s.value) as difference
from table2 t2 join
     table1 t1s
     on t2.start_date = t1s.date join
     table1 t1e
     on t2.end_date = t1e.date;
Run Code Online (Sandbox Code Playgroud)

如果某些日期table2可能不匹配table1,则使用left join而不是内部联接.