问题描述
我在Oracle SQL中与两个查询建立了联合
SELECT account_number,SUM(amount_settled)
FROM table W
WHERE account_number= &acc
AND Component = 'PROFIT_1'
GROUP BY account_number
UNION
SELECT account_number,SUM(amount)
FROM table S
WHERE account_number= &acc
AND amount_tag= 'PROFIT_2'
GROUP BY account_number
ORDER BY account_number
我在结果集中获得的价值要比另一个低
SUM(AMOUNT_SETTLED)
1 36260.16
2 36342.16
我想在另一行旁边显示
SUM(AMOUNT_SETTLED) SUM(E.AMOUNT)
36260.16 36342.16
如何在Oracle中使用两个不同的表来实现这一点
解决方法
这似乎是您当前的情况(没有包含替换变量的行):
SELECT account_number,SUM(amount_settled)
FROM table1 t1
WHERE component = 'PROFIT_1'
GROUP BY account_number
UNION
SELECT account_number,SUM(amount)
FROM table2 t2
WHERE amount_tag= 'PROFIT_2'
GROUP BY account_number
,您可能需要通过使用条件聚合从每个表分别派生的子查询中使用CROSS JOIN
:
SELECT sum_amount_settled,sum_amount
FROM ( SELECT SUM(CASE WHEN component = 'PROFIT_1' THEN amount_settled END) AS sum_amount_settled
FROM table1)
CROSS JOIN ( SELECT SUM(CASE WHEN amount_tag = 'PROFIT_2' THEN amount END) AS sum_amount
FROM table2)