我有一个非常简单的样例查询,我正在尝试完成。
SQL Fiddle
SELECT
month(s.report_date),
COALESCE(COUNT(*),0)
FROM
stat_summary s LEFT OUTER JOIN ref_months m on MONTH(s.report_date) = m.month_id
GROUP BY month(s.report_date)我的研究结果如下:

我想要的结果应该是:
month | count
----------------
1 | 0
2 | 0
3 | 0
4 | 0
5 | 0
6 | 0
7 | 0
8 | 0
9 | 4
10 | 9
11 | 0
12 | 0发布于 2015-09-30 13:55:25
您需要使用月份表作为主要表:
SELECT
m.month_id,
COALESCE(COUNT(s.report_date),0)
FROM ref_months m
LEFT JOIN stat_summary s
ON MONTH(s.report_date) = m.month_id
GROUP BY m.month_id;发布于 2015-09-30 14:01:23
您可以更改LEFT JOIN表的顺序,并且不需要COALESCE
SqlFiddleDemo
SELECT
m.month_id,
[count] = COUNT(s.report_date)
FROM ref_months m
LEFT JOIN stat_summary s
ON MONTH(s.report_date) = m.month_id
GROUP BY m.month_id;发布于 2015-09-30 14:01:30
你可以试试这。正如已经回答的那样,months应该是left join编辑的表。此外,count应该位于adp列上或stat_summary表中的month(s.report_date)列上。
SELECT
m.month_id,
COALESCE(COUNT(adp),0)
FROM ref_months m LEFT OUTER JOIN stat_summary s
on MONTH(s.report_date) = m.month_id
GROUP BY month(s.report_date),m.month_idhttps://stackoverflow.com/questions/32867929
复制相似问题