首先写获得一个月总天数的方法:
create function [dbo].[DayofMon] ( @nowdate datetime ) returns int as begin declare @num int set @num = (select day(dateadd(dd,-day(@nowdate),dateadd(mm,1,@nowdate)))) return @num end用select dbo.DayofMon('2011-02')获得总天数
下面介绍如何查询一个月中每天的汇总记录
create proc Article_GetSum @date datetime--传递一个时间值 as begin declare @Sum int,@i int,@SQL varchar(max)--@Sum代表总天数,@i循环变量值,@SQL语句 Set @i=1--默认从1号开始查询 Set @Sum=dbo.DayofMon(@date)--获取X月的总天数,继承上面写的方法 Set @SQL='Select ' while @i<=@sum--循环 begin Set @SQL=@SQL+'(Select count(*) From Article Where datediff(day,'''+ltrim(year(@date))+'-'+ltrim(month(@date))+'-'+ltrim(@i)+''',A_InTime)=0) AS '''+ltrim(month(@date))+'-'+ltrim(@i)+''',' Set @i=@i+1 end Set @SQL=substring(@SQL,0,len(@SQL))--去掉最后的逗号 exec(@SQL)--执行SQL语句 end go
执行结果如图:
- 本文标题: SQL存储过程查询一个月中每天的汇总记录
- 文章分类:【SQLServer】
- 非特殊说明,本文版权归【胡同里的砖头】个人博客 所有,转载请注明出处.