我有一个非常简单的示例查询,我正在尝试完成。
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
答案 0 :(得分:3)
您需要使用月表作为主要表:
Dim Street as String
答案 1 :(得分:0)
您可以更改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;
答案 2 :(得分:0)
您可以尝试this。如前所述,months
应该是left join
的表格。此外,count
应位于adp
列或month(s.report_date)
表格中的stat_summary
列。
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_id
答案 3 :(得分:0)
如果您的ref_months表中的月份不存在,您可以使用主数据库创建。
Select m.Number as m_MonthID
COALESCE(COUNT(*),0) as count
from FROM Master.dbo.spt_Values m
left join stat_summary s
ON MONTH(s.report_date) = m.Number
where m.name is null
and m.number between 1 and 12
GROUP BY m.Number