這是我的mysql收入表。如何按月分組並在某月份沒有值時返回零?
+----+------------------+---------------------------+------------+---------+
| id | title | description | date | amount |
+----+------------------+---------------------------+------------+---------+
| 1 | Vehicle sales up | From new sale up | 2016-09-09 | 9999.99 |
| 2 | Jem 2 Sales | From rathnapura store | 2016-05-15 | 9545.25 |
| 3 | Jem 2 Sales 2 | From rathnapura store | 2016-05-15 | 9545.25 |
| 4 | Jem 2 Sales 2 | From rathnapura store 234 | 2016-05-15 | 9545.25 |
+----+------------------+---------------------------+------------+---------+
字段'date'是標準的sql日期。我執行這個查詢是爲了按月收入的總和,如果沒有從某個月的收入返回零。如果沒有來自某個月的收入,我想要零,因爲我想在圖表中顯示這些數據。
這是查詢。
SELECT MONTHNAME(`date`) AS mName, MONTH(`date`) AS mOrder, ifnull(sum(amount),0) AS total_num FROM income GROUP BY mOrder ORDER BY mOrder DESC
但我只得到如下輸出。如果在其他月份沒有值,則不能爲零。這是輸出。
+-----------+--------+-----------+
| mName | mOrder | total_num |
+-----------+--------+-----------+
| September | 9 | 9999.99 |
| May | 5 | 28635.75 |
+-----------+--------+-----------+
而且我希望上表中的其他月份和total_num爲零。我怎樣才能做到這一點?那裏也有同樣的問題。但沒有工作的答案。 Group by month and return 0 if data not found
請幫我解決這個問題。我使用這個應用程序的語言是Node.js的:)
但是你只有兩個月份你的榜樣,所以結果相當有規律。 – user1016265
我想你會需要一些Calandar表,並加入它,然後按月組 – guiguiblitz
@ user1016265是的,我有幾個月。但我認爲這並不重要。因爲如果代碼是正確的,其他月份應該與zoro一起出現。不是?這就是我想要的原因。想象一下,這是一個會計系統,在年初,我們只有1月份的收入。所以其他11個月的收入必須爲0。不是? –