SQL 查询在 group by 表达式 (Oracle) 上返回结果

贾克斯

当我运行以下查询时,我会得到每个会计期间的金额总和。但是在某些会计期间,我没有任何金额,因此自然而然,结果集中不会显示那些没有金额总和(空)的期间。

我想知道如何为他们返回金额为 0 的那些。

SELECT 
    ACCOUNTING_PERIOD, 
    SUM(RESOURCE_AMOUNT) AS TOTAL,
FROM 
    RESOURCE_TBL
GROUP BY
    ACCOUNTING_PERIOD

我得到以下结果集

accounting_period   TOTAL
-------------------------
1                   234
3                    65
5                   943
6                   299
.                   .
.                   .
.                   .

在上述期间 2 和 4 被省略,因为总和为零或空,但我想得到

accounting_period   TOTAL
-------------------------
1                   234
2                     0
3                    65
4                     0
5                   943
6                   299
.                   .
.                   .
.                   .
MT0

生成所有可能的会计期间的列表,然后LEFT OUTER JOIN与您的表一起生成:

WITH accounting_periods ( accounting_period ) AS (
  SELECT LEVEL FROM DUAL CONNECT BY LEVEL <= 12
)
SELECT a.ACCOUNTING_PERIOD, 
       COALESCE( SUM(RESOURCE_AMOUNT), 0 ) AS TOTAL
FROM   accounting_periods a
       LEFT OUTER JOIN
       RESOURCE_TBL r
       ON ( a.accounting_period = r.accounting_period )
GROUP BY a.ACCOUNTING_PERIOD

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Oracle查询显示错误“不是GROUP BY表达式”

Oracle SQL 正则表达式 - 在正则表达式查询中传递变量名称

Oracle SQL 错误“缺少表达式”(但相同的 SQL 查询在 MySQL 中有效)

使用group by的oracle sql查询

不是GROUP BY表达式(Oracle)

使用 sum 和 group by 条件将 SQL 查询转换为 linq/lambda 表达式

Oracle:此表达式“ <>”在SQL查询中是什么意思?

修改Oracle Sql查询返回的结果的内容

Oracle数据库查询正则表达式未给出正确的结果

从 Where 表达式获取 SQL 查询

SQL 子查询作为表达式

表达式引擎的SQL AND OR查询?

SQL查询-表达式> 0

SQL 不是 GROUP BY 表达式

JOOQ查询布尔表达式的结果

使用T-SQL在CASE表达式中使用子查询的结果

将Excel表达式添加到SQL查询结果

从过滤的SQL查询返回正则表达式匹配作为字段

SQL 错误 [21000]:错误:用作表达式的子查询返回多行

选择多个字段而不使用聚合表达式时,Oracle SQL返回错误

如何在SQLAlchemy的SQL表达式语言上使用JSON_OBJECTAGG编写MySQL查询?

Oracle SQL查询到GROUP BY并减去?

Oracle SQL Developer案例表达式嵌套查询导致“ ORA-00937:不是单个组组函数”错误

在没有 GROUP BY 的聚合查询中,表达式

在oracle中插入查询,显示错误缺少表达式

如何创建正则表达式来查询Oracle?

Oracle使用正则表达式查询以查找记录

Oracle 错误:ORA-00979:不是 GROUP BY 表达式

ORA-00979: 不是 Oracle 中的 GROUP BY 表达式