sql - Oracle 中的结果集与 Union
问题描述
我在 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)
推荐阅读
- laravel - 如何从 Laravel 控制器显示变量以查看具有特定索引的 javascript
- php - 有条件地从数组中删除一个元素 - Cakephp
- javascript - FabricJS:如何创建放大镜镜头效果,在镜头中同时显示背景图像和画布对象
- java - junit5 如何运行测试文件夹中的所有类?
- python - Spacy 中基于规则的 NER:删除模式
- ios - 核心数据 setValue 似乎覆盖了以前的值
- ios - 在 swiftui 列表中使用 struct id
- apache-spark - 如何从 Spark 中的多个云存储桶中读取 TXT 文件?
- java - 使用 Gremlin 和 Java 连接 JanusGraph 会产生序列化异常(遇到未注册的类 ID:65536)
- sql - 更新表和字符串或二进制数据将被截断