2014-02-24 169 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日