首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL查询按表达式组返回结果(Oracle)

SQL查询按表达式组返回结果(Oracle)
EN

Stack Overflow用户
提问于 2017-03-29 14:29:17
回答 2查看 46关注 0票数 0

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

我想知道如何把0的总和还给他们。

代码语言:javascript
复制
SELECT 
    ACCOUNTING_PERIOD, 
    SUM(RESOURCE_AMOUNT) AS TOTAL,
FROM 
    RESOURCE_TBL
GROUP BY
    ACCOUNTING_PERIOD

我得到以下结果集

代码语言:javascript
复制
accounting_period   TOTAL
-------------------------
1                   234
3                    65
5                   943
6                   299
.                   .
.                   .
.                   .

在上面的周期中,由于和为零或为零,所以省略了2和4,但是我想要得到

代码语言:javascript
复制
accounting_period   TOTAL
-------------------------
1                   234
2                     0
3                    65
4                     0
5                   943
6                   299
.                   .
.                   .
.                   .
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-29 14:39:28

生成所有可能的会计期间的列表,然后使用您的表对其进行LEFT OUTER JOIN

代码语言:javascript
复制
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
票数 2
EN

Stack Overflow用户

发布于 2017-03-29 14:36:39

根据How do I get SUM function in MySQL to return '0' if no values are found?的文章,请尝试以下.

代码语言:javascript
复制
SELECT ACCOUNTING_PERIOD,
       COALESCE( SUM(RESOURCE_AMOUNT), 0 ) AS TOTAL
FROM RESOURCE_TBL
GROUP BY ACCOUNTING_PERIOD;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43096451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档