我有两个表,其结构如下
表一
║ID║ 日期 ║值║║ ════╬═══════╬══╣ ║1║1/1/2015║234║║ ║2║二〇一五年一月二十〇日║267║║ ║3║2015年1月25日║270 ║║ ╚════╩═══════════╩═══════╩══╝
第二张桌子
║ 开始日期 ║结束日期║ ═══════╣ ║║1/1/2015 2015年1月20日║ ║║2015年1月20日2015年1月25日║ ╚════════════╩══ ═════════╝
我的输出必须是
║起始 日期 ║结束日期║差异║ ══════════╬═══════════╬════════════╣ ║1/1/2015║二〇一五年一月二十○日║33 ║ ║2015年1月20日2015年1月25日║║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
我在上面的查询中获得ORA-01427。我在做什么错,我如何获得结果?
只需使用join
s:
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;
如果某些日期table2
可能不匹配table1
,则使用left join
而不是内部联接。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句