我在SQL中创建月份>计数选择查询时遇到了困难。
基本上,我有一个条目列表,所有条目都有与之关联的日期。我希望最终结果是一个包含12行的列表(每个月一行),每行包含月份编号(1月1,2月2等),以及有多少条目的计数那个月设定为它的日期。像这样:
Month - Count
1 - 12
2 - 0
3 - 7
4 - 0
5 - 9
6 - 0
我可以获得包含数量大于0的月份的结果,但如果月份不包含任何条目,则不会创建该行。我只是通过
得到这个结果SELECT Month(goalDate) as monthNumber, count(*) as monthCount
FROM goalsList
WHERE Year(goalDate) = 2012
GROUP BY Month(goalDate)
ORDER BY monthNumber
提前感谢您的帮助!
答案 0 :(得分:2)
尝试这样的事情,
SELECT a.monthNo, COUNT(b.goalDate)
FROM (
SELECT 1 monthNo UNION SELECT 2 monthNo
UNION
SELECT 3 monthNo UNION SELECT 4 monthNo
UNION
SELECT 5 monthNo UNION SELECT 6 monthNo
UNION
SELECT 7 monthNo UNION SELECT 8 monthNo
UNION
SELECT 9 monthNo UNION SELECT 10 monthNo
UNION
SELECT 11 monthNo UNION SELECT 12 monthNo
) a LEFT JOIN goalsList b
ON a.monthNo = CAST(month(b.goalDate) as SIGNED)
GROUP BY a.monthNo
ORDER BY a.monthNo;
我们的想法是在临时表中创建月份编号的记录列表,并将其与表格goalsList
连接起来。 (假设OP没有月份表)