通过以下语句可以实现查询返回每个月的记录数,且格式如下:时间: 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)请问以上语句如何修改?

解决方案 »

  1.   

    你把 convert(varchar(7),txtime,120) 换成 datename(week,txtime)  试试!
      

  2.   

    你可以先做一个日期表,存每周的起始日期和结束日期select convert(varchar(10),min(txtime),120) as stime,
           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 类似这个样子。