小编典典

从两个表中获取几列的总和

sql

我想从2个不同的表中获得几列的总和(这些表具有相同的结构)。

如果我只考虑一个表,我会写这种查询:

SELECT MONTH_REF, SUM(amount1), SUM(amount2)
    FROM T_FOO
    WHERE seller = XXX
    GROUP BY MONTH_REF;

但是,我也想使用表T_BAR中的数据,然后使用select查询返回以下列:

  • MONTH_REF
  • SUM(T_FOO.amount1)+ SUM(T_BAR.amount1)
  • SUM(T_FOO.amount2)+ SUM(T_BAR.amount2)

一切都按的值分组MONTH_REF

请注意,给定记录MONTH_REF可以在一个表中找到,但不能在另一表中找到。在这种情况下,我想获得T_FOO.amount1 + 0(或0 +T_BAR.amount1)的总和。

如何编写我的SQL查询以获取此信息?

有关信息,我的数据库是Oracle 10g。


阅读 135

收藏
2021-03-23

共1个答案

小编典典

您可以在分组依据之前合并表(顺便说一下,这在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
2021-03-23