通过以下语句可以实现查询返回每个月的记录数,且格式如下:时间: 2011-1 2011-2 2011-3 2011-4.。。
记录数: 100 67 88 105现想修改sql语句为查询周期以周为单位(自动默认从周一至周天,时间段的选择是动态的),得出结果格式如下:
时间: 第一周 第二周 第三周 第四周
记录数: 20 40 30 10declare @s varchar(8000)
select @s=isnull(@s,'')+'['+convert(varchar(7),txtime,120)+'],'
from qxzb
group by convert(varchar(7),txtime,120)
select @s='select * from'
+' (select months=convert(varchar(7),txtime,120),Num=count(1) from qxzb group by convert(varchar(7),txtime,120)) t'
+' pivot (max(Num) for months in ('+left(@s,len(@s)-1)
+')) a '
exec(@s)请问以上语句如何修改?
记录数: 100 67 88 105现想修改sql语句为查询周期以周为单位(自动默认从周一至周天,时间段的选择是动态的),得出结果格式如下:
时间: 第一周 第二周 第三周 第四周
记录数: 20 40 30 10declare @s varchar(8000)
select @s=isnull(@s,'')+'['+convert(varchar(7),txtime,120)+'],'
from qxzb
group by convert(varchar(7),txtime,120)
select @s='select * from'
+' (select months=convert(varchar(7),txtime,120),Num=count(1) from qxzb group by convert(varchar(7),txtime,120)) t'
+' pivot (max(Num) for months in ('+left(@s,len(@s)-1)
+')) a '
exec(@s)请问以上语句如何修改?
convert(varchar(10),max(txtime),120) as etime
into #tb
from tb
group by datename(week,txtime)用这个临时表的stime和etime去划分你的数据! 列可以为 2011-06-01 -- 2011-06-05 类似这个样子。