当我运行以下查询时,我得到每个会计期间的金额总和。但是在某些会计期间,我没有任何金额,所以自然地,那些没有金额总和(空)的期间不会显示在结果集中。
我想知道如何为他们返还金额为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
. .
. .
. .
答案 0 :(得分:2)
生成所有可能会计期间的列表,然后使用您的表格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
答案 1 :(得分:1)
根据文章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;