Rom*_*las 11 sql oracle group-by sum
我想从两个不同的表中获得几列的总和(这些表共享相同的结构).
如果我只考虑一个表,我会写这种查询:
SELECT MONTH_REF, SUM(amount1), SUM(amount2)
FROM T_FOO
WHERE seller = XXX
GROUP BY MONTH_REF;
Run Code Online (Sandbox Code Playgroud)
但是,我还想使用表T_BAR中的数据,然后有一个select返回以下列的查询:
一切按价值分组MONTH_REF.
请注意,给定的记录MONTH_REF可以在一个表中找到,但不能在另一个表中找到.在这种情况下,我想得到T_FOO.amount1 + 0(或0 + T_BAR.amount1)的总和.
如何编写SQL查询以获取此信息?
有关信息,我的数据库是Oracle 10g.
Kob*_*obi 12
您可以在组之前将表联合起来(顺便说一下,这是在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
Run Code Online (Sandbox Code Playgroud)
您还可以将表与卖方字段合并,稍后再过滤(如果您需要更高级的逻辑):
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
Run Code Online (Sandbox Code Playgroud)