【问题标题】:Result set in Oracle with UnionOracle 中的结果集与 Union
【发布时间】:2021-01-04 03:36:08
【问题描述】:

我已经在 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 中使用两个不同的表来实现这一点

【问题讨论】:

    标签: sql oracle group-by oracle11g


    【解决方案1】:

    似乎这是您当前的情况(没有包含替换变量的行):

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-23
      • 2013-10-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多