SQL 查询每个月统计的数据。

例如:月份count2012-01122012-0202012-03132013-04162013-050。。。。。。2013-1212如果其中哪个没数据就默认为0.这个... 例如:
月份 count
2012-01 12
2012-02 0
2012-03 13
2013-04 16
2013-05 0

。。。。。。
2013-12 12
如果其中哪个没数据就默认为0.
这个SQL 应该怎么写。 在线等
在数据库月份表里面。 没有2月份,和5月份,这2个月的值。
不好意思 年份弄错了、。 都是查询2012。1月到12月的数据
展开
 我来答
家有一只羊
2013-01-22 · 超过58用户采纳过TA的回答
知道小有建树答主
回答量:242
采纳率:0%
帮助的人:107万
展开全部
select 月份,sum(isnull(count,0)) from A group by 月份
你是不是整个月没数据的就自动要补一条记录为0的
我想了一下,简单的这样写,都不可能出现补零的数据,毕竟这个月份的数据并没有出现在表中。
看实际情况,必要时候使用union
既然知道只有两个月的,那就补上
select * from
(
select 月份,sum(isnull(count,0)) from A group by 月份
union all
select '2012-02',0
union all
select '2013-05',0
) a
order by 月份
不过话说你是不是年份弄错了,从2012直接跳到2013?

我这个方法还搞不定吗?
木木夕木9EzcE
推荐于2017-10-06 · 超过55用户采纳过TA的回答
知道小有建树答主
回答量:186
采纳率:0%
帮助的人:122万
展开全部
先用一个表变量,然后连表查的
DECLARE @M Table(MData char(2) null)
INSERT INTO @M(MData)VALUES('1')
INSERT INTO @M(MData)VALUES('2')
INSERT INTO @M(MData)VALUES('3')
INSERT INTO @M(MData)VALUES('4')
INSERT INTO @M(MData)VALUES('5')
INSERT INTO @M(MData)VALUES('6')
INSERT INTO @M(MData)VALUES('7')
INSERT INTO @M(MData)VALUES('8')
INSERT INTO @M(MData)VALUES('9')
INSERT INTO @M(MData)VALUES('10')
INSERT INTO @M(MData)VALUES('11')
INSERT INTO @M(MData)VALUES('12')
select a.MData,isnull(b.count,0) from @M as a left join (select datepart(month, 月份)
as date,count(ID) as count
from 表名 group by datepart(month, 月份)) as b on a.MData=b.date
更多追问追答
追问
有点思路。 但是在我们这边行不通。
不能建表。直接硬写SQL
追答
不能创建表变量?你那是sql的版本2005之前的?

DECLARE @M Table(MData char(2) null)
INSERT INTO @M(MData)VALUES('1')
INSERT INTO @M(MData)VALUES('2')
INSERT INTO @M(MData)VALUES('3')
INSERT INTO @M(MData)VALUES('4')
INSERT INTO @M(MData)VALUES('5')
INSERT INTO @M(MData)VALUES('6')
INSERT INTO @M(MData)VALUES('7')
INSERT INTO @M(MData)VALUES('8')
INSERT INTO @M(MData)VALUES('9')
INSERT INTO @M(MData)VALUES('10')
INSERT INTO @M(MData)VALUES('11')
INSERT INTO @M(MData)VALUES('12')
select * from @M
这样有语法错误吗?要不你试试创建临时表
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-01-21
展开全部
SQL Server 环境下, 使用:

SELECT
DATEADD(mm, number, '2012-01-01')
FROM
master..spt_values
WHERE
type='P'
AND number between 0 and 24

通过上面这个查询, 产生一个连续的 24个月的日期

然后用这个子查询 LEFT JOIN 你的表

然后用 ISNULL 函数, 如果是 NULL 就 为 0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
h_z_lan56
2013-01-21 · 超过17用户采纳过TA的回答
知道答主
回答量:87
采纳率:0%
帮助的人:45.1万
展开全部
select isnull (count,'0') from table
你的要求,只要在你需要查的那列前加isnull(列,'0')就是当为空时为0,那个0可以随意的
还不清楚? select 月份,innull(count(*),'0') from table group by 月份
来自:求助得到的回答
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
冰凌水晶平平
2013-01-28
知道答主
回答量:16
采纳率:0%
帮助的人:4.9万
展开全部
select 月份,sum(isnull(count,0)) from A group by 月份
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式