现在有 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日
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日
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 行受影响)
自己再行转列下!
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 行受影响)*/
(
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
报错
我的是sql server 2000第 9 行: 'xml' 附近有语法错误。