我想从2个不同的表中获得几列的总和(这些表具有相同的结构)。
如果我只考虑一个表,我会写这种查询:
SELECT MONTH_REF, SUM(amount1), SUM(amount2) FROM T_FOO WHERE seller = XXX GROUP BY MONTH_REF;
但是,我也想使用表T_BAR中的数据,然后使用select查询返回以下列:
select
一切都按的值分组MONTH_REF。
MONTH_REF
请注意,给定记录MONTH_REF可以在一个表中找到,但不能在另一表中找到。在这种情况下,我想获得T_FOO.amount1 + 0(或0 +T_BAR.amount1)的总和。
T_FOO.amount1 + 0
0 +T_BAR.amount1
如何编写我的SQL查询以获取此信息?
有关信息,我的数据库是Oracle 10g。
您可以在分组依据之前合并表(顺便说一下,这在Oracle上):
SELECT t.month_ref, SUM(t.amount1), SUM(t.amount2) FROM (SELECT month_ref, amount1, amount2 FROM T_FOO WHERE seller = XXX UNION ALL SELECT month_ref, amount1, amount2 FROM T_BAR WHERE seller = XXX ) t GROUP BY t.month_ref
您还可以将表与卖方字段合并,并在以后进行过滤(以防您需要更高级的逻辑):
SELECT t.month_ref, SUM(t.amount1), SUM(t.amount2) FROM (SELECT month_ref, amount1, amount2, seller FROM T_FOO UNION ALL SELECT month_ref, amount1, amount2, seller FROM T_BAR) t where t.seller = XXX GROUP BY t.month_ref