我的问题是我无法计算当月出现了多少数据,如果没有数据,则默认值为0。
id | data_plan | data_start
---------------------------
1 | 2018-7-29 | 2018-8-29
2 | 2018-7-29 | 2018-9-29
3 | 2018-9-29 | 2018-10-29
4 | 2018-3-29 | 2018-10-29
5 | 2018-7-29 | 2018-9-29
6 | 2018-9-01 | 2018-9-29
7 | 2018-4-29 | 2018-11-29
我的结果
cplan | cstart
---------------------------
March | October
April | November
July | August
July,July | September,September
September | September
September | October
期望的结果。
monthdata | cplan | cstart
---------------------------
January | 0 | 0
February | 0 | 0
March | 1 | 0
April | 1 | 0
May | 0 | 0
June | 0 | 0
July | 3 | 0
Aug | 0 | 1
Sept | 2 | 3
October | 0 | 2
November | 0 | 1
December | 0 | 0
这是我的问题
SELECT
GROUP_CONCAT(Monthname(data_plan)) as cplan,
GROUP_CONCAT(Monthname(data_start)) as cstart
FROM
data
group by data_plan,data_start
我的小提琴
6条答案
按热度按时间lokaqttq1#
您可以使用子查询来构建月份列表,并将左键连接到数据表中
92vpleto2#
要得到想要的结果,首先必须创建一个月表,然后必须
LEFT JOIN
对于包含data_plan
以及data_start
每月:输出:
更新的sqlfiddle
q1qsirdb3#
解决方案2:
fbcarpbf4#
解决方案1:
w1jd8yoj5#
使用
COUNT()
功能:dldeef676#
解决方案3: