现在有 3月份日期表 如下:select [day]=convert(varchar,DATEADD(mm,DATEDIFF(mm,0,'2011-03-01'),0)+number,112),datepart(w,DATEADD(mm,DATEDIFF(mm,0,'2011-03-01'),0)+number) as wk
from master..spt_values  
where type='p'  
  and number< datediff(dd,'2011-03-01',dateadd(mm,1,'2011-03-01')) 现在要把它按星期显示,同一星期日期放在一个格里面显示成字符串 如下星期一          星期二               星期三         .....       星期日
07,14,21,28     01,08,15,22,29       02,09,16,23,30             6,13,20,27表示2011年3份  星期一是 07日,14日,21日,28日
               星期二是 01日,08日,15日,22日,29日

解决方案 »

  1.   

    那还不如这里:http://topic.csdn.net/u/20110331/11/70aece31-c3af-4248-848c-8e46904652f6.html?30142
      

  2.   

    select [day]=convert(varchar,DATEADD(mm,DATEDIFF(mm,0,'2011-03-01'),0)+number,112),
    datepart(w,DATEADD(mm,DATEDIFF(mm,0,'2011-03-01'),0)+number) as wk
    into #t
    from master..spt_values   
    where type='p'   
      and number< datediff(dd,'2011-03-01',dateadd(mm,1,'2011-03-01'))select wk,stuff((select ',' + right([day],2) from #t where wk = t.wk for xml path('')),1,1,'')dd
    from #t t
    group by wkdrop table #t/*
    wk          dd
    ----------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    1           06,13,20,27
    2           07,14,21,28
    3           01,08,15,22,29
    4           02,09,16,23,30
    5           03,10,17,24,31
    6           04,11,18,25
    7           05,12,19,26(7 行受影响)
    自己再行转列下!
      

  3.   

    declare @sql varchar(max),@startdate datetime,@enddate datetime 
    set @startdate='2009-09-28'
    set @enddate='2009-10-5'
    set @sql='select '
    select @sql=@sql+','''+convert(varchar(10),dateadd(day,number,@startdate),120)+''''
    from master..spt_values where type='P' and number<=datediff(dd,@startdate,@enddate)
    select @sql=stuff(@sql,8,1,' ')
    exec(@sql)
    /*---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
    2009-09-28 2009-09-29 2009-09-30 2009-10-01 2009-10-02 2009-10-03 2009-10-04 2009-10-05(1 行受影响)*/
      

  4.   

    ;with tmp as
    (
    select [day]=convert(varchar,DATEADD(mm,DATEDIFF(mm,0,'2011-03-01'),0)+number,112),datepart(w,DATEADD(mm,DATEDIFF(mm,0,'2011-03-01'),0)+number) as wk
    from master..spt_values   
    where type='p'and number< datediff(dd,'2011-03-01',dateadd(mm,1,'2011-03-01'))  
    )
    select max(星期一)星期一,
           max(星期二)星期二,
           max(星期三)星期三,
           max(星期四)星期四
            ...
    from(
    select  stuff((select ';'+ltrim([day])
            from tmp
            where wk=2 and wk=t.wk
            for xml path('')),1,1,'')星期一,
            stuff((select ';'+ltrim([day])
            from tmp
            where wk=3 and wk=t.wk
            for xml path('')),1,1,'')星期二,
            stuff((select ';'+ltrim([day])
            from tmp
            where wk=4 and wk=t.wk
            for xml path('')),1,1,'')星期三,
            stuff((select ';'+ltrim([day])
            from tmp
            where wk=5 and wk=t.wk
            for xml path('')),1,1,'')星期四
             ...
    from tmp t 
    )t
      

  5.   

    3楼的大哥,你的我怎么运行不了啊
    报错
    我的是sql server 2000第 9 行: 'xml' 附近有语法错误。