如何解决使用Union在Oracle中设置结果集
我在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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。