当我运行以下查询时,我会得到每个会计期间的金额之和。但是,在某些会计期间,我没有任何金额,因此,那些没有金额和(null)的期间自然不会显示在结果集中。
我想知道如何把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
. .
. .
. .发布于 2017-03-29 14:39:28
生成所有可能的会计期间的列表,然后使用您的表对其进行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发布于 2017-03-29 14:36:39
根据How do I get SUM function in MySQL to return '0' if no values are found?的文章,请尝试以下.
SELECT ACCOUNTING_PERIOD,
COALESCE( SUM(RESOURCE_AMOUNT), 0 ) AS TOTAL
FROM RESOURCE_TBL
GROUP BY ACCOUNTING_PERIOD;https://stackoverflow.com/questions/43096451
复制相似问题