问题描述
- SQL按月统计没有数据的月份如何显示
-
这是表。
SELECT MONTH(CREATE_TIME) AS m,COUNT(*),REMARK FROM dept AS d
WHERE YEAR(CREATE_TIME)=2016 AND REMARK = 2 OR REMARK
GROUP BY MONTH(CREATE_TIME)
这是SQL
这是结果。我想要没有数据的月份显示为0
例如上面的结果8,9,12月没有数据。就显示为8 0,9 0, 12 0
解决方案
如果我是你用数据库解决不了 我会用后台代码来把它解决
解决方案二:
SELECT K1.m,COUNT(*) ,K2.REMARK from
(SELECT MONTH(CREATE_TIME) AS m, REMARK FROM dept AS d
WHERE YEAR(CREATE_TIME)=2016
GROUP BY REMARK) K1
LEFT JOIN
(SELECT MONTH(CREATE_TIME) AS m,COUNT(*),REMARK FROM dept AS d
WHERE YEAR(CREATE_TIME)=2016 AND REMARK = 2
GROUP BY MONTH(CREATE_TIME)) K2
ON K1.REMARK=A2.REMARK
WHERE 1=1
GROUP BY K1.m
这个试试,我没数据表,纯属按思路写的.错了勿怪
解决方案三:
代码解决比SQL解决更好,按月统计的数据本身数量就少,查询出来代码校验一下把缺少的加上多少,通过SQL解决还占用数据库的资源。
时间: 2024-10-03 18:54:05