[英]LEFT OUTER JOIN not returning NULL values
我有一個非常簡單的示例查詢,我正在嘗試完成。
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
您需要使用months表作為主要表:
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;
您可以更改LEFT JOIN
表的順序,並且不需要COALESCE
:
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;
你可以試試這個 。 前面已經回答了, months
應該是可以在表left join
在編。 另外, count
應在stat_summary
表的adp
列或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_id
如果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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.