Getting the sum of several columns from two tables

前端 未结 5 476
生来不讨喜
生来不讨喜 2021-01-11 16:26

I want to get the sum of several columns from 2 different tables (these tables share the same structure).

If I only consider one table, I would write this kind of qu

相关标签:
5条回答
  • 2021-01-11 17:08

    I finally get this working using the Lieven's answer.

    Here is the correct code (amount1 = ... is not working on my environment, and there are too many ; in the query):

    SELECT MONTH_REF, SUM(sumAmount1), SUM(sumAmount2)
    FROM (
      SELECT MONTH_REF, SUM(amount1) as sumAmount1, SUM(amount2) as sumAmount1
          FROM T_FOO
          WHERE seller = XXX
          GROUP BY MONTH_REF
      UNION ALL SELECT MONTH_REF, SUM(amount1), SUM(amount2)
          FROM T_BAR
          WHERE seller = XXX
          GROUP BY MONTH_REF
      ) tmp
    GROUP BY MONTH_REF
    
    0 讨论(0)
  • 2021-01-11 17:16
    SELECT (SELECT SUM(amount) from debit) as debitamounts, (SELECT SUM(amount) from credit) as creditamounts
    
    0 讨论(0)
  • 2021-01-11 17:22

    Alternatively, an outer join should also work:

    SELECT month_ref, 
           SUM(t_foo.amount1) + SUM(t_bar.amount1), 
           SUM(t_foo.amount2)+SUM(t_bar.amount2)
    FROM   t_foo FULL OUTER JOIN t_bar
           ON t_foo.month_ref = t_bar.month_ref
    GROUP BY month_ref
    
    0 讨论(0)
  • 2021-01-11 17:24

    You can union your tables before the group by (this is on Oracle, by the way):

    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
    

    You may also union the tables with the seller field and filter by it later (in case you need more advanced logic):

     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
    
    0 讨论(0)
  • 2021-01-11 17:25

    Have you tried using a union?

    SELECT MONTH_REF, SUM(amount1), SUM(amount2)
    FROM (
      SELECT MONTH_REF, SUM(amount1) AS amount1, SUM(amount2) as amount2
          FROM T_FOO
          WHERE seller = XXX
          GROUP BY MONTH_REF
      UNION ALL SELECT MONTH_REF, SUM(amount1), SUM(amount2)
          FROM T_BAR
          WHERE seller = XXX
          GROUP BY MONTH_REF
      ) tmp
    GROUP BY MONTH_REF
    
    0 讨论(0)
提交回复
热议问题