使用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)   

Demo

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...