2014-02-24 170 views
-2

我有一套日期,它是相應的銷售,我想按月訂購組。
不是有可能幾個月的入場不能出現,如果是這樣,那麼相應的月份的值將是0,否則其他月份可用的總和。MySql Group by Month

+0

你想要顯示1-12個月嗎?並且如果有月份的輸入而不是總和值,並且如果不存在比如顯示月份:2總和:0? – enigmaticus

+0

是啊1-12 entries.If有條目,然後總計否則0..along與分組和總和 –

+0

檢查答案 – enigmaticus

回答

0

這樣的事情可能會做一個小把戲: - 但你需要照顧多年,這只是基於月

SELECT s1.m as mnth,IFNULL(s2.smv,0) as smv FROM 
(SELECT 1 as m UNION 
SELECT 2 UNION 
SELECT 3 UNION 
SELECT 4 UNION 
SELECT 5 UNION 
SELECT 6 UNION 
SELECT 7 UNION 
SELECT 8 UNION 
SELECT 9 UNION 
SELECT 10 UNION 
SELECT 11 UNION 
SELECT 12) s1 
LEFT JOIN 
(SELECT MONTH(startdatum) as mnth, 
SUM(somevalue) as smv 
FROM db_table GROUP BY mnth) s2 
ON s1.m=s2.mnth 
+0

工作..你做了輕鬆:) –

+0

高興地幫助:) – enigmaticus

0

你可以試試: //這會得到你所需要的一個月

SELECT * FROM tbl1 WHERE date=MONTH('datecolumn_name') ORDER BY MONTH(datecolumn_name) ASC; 
+0

你沒有得到我問的問題..!如果月2月,3月入境沒有找到然後它將返回0的那個月其他任何達到的總和將是結果 –

0

一卷運行THIZ查詢u得到思想的所有條目:

(SELECT @d:= DATE_ADD(@d ,month 1 month)as month_view,date_format(@c,'%b-%Y')AS month_name,@ a:= @c AS month_start,@ b:= if(last_day(@a)>'2014-02- 24','2014-02-24',last_day(@a))AS month_end,@c:= CASE WHEN date_add(@ b,interval 1 DAY)>'2014-02-24'THEN NULL ELSE date_add(@b ,INTERVAL 1 DAY)END AS dummy_val FROM table_name, (SELECT @c:='2013-01-01',@d:='2013-01-01')AS month_temp W這裏@c IS NOT NULL)

'表名' UR此數據庫提供任何表名

FROM_DATE = 2013-01-01 TO_DATE = 2014年2月24日