简单的calendar

来源:互联网 发布:野外直播用什么网络 编辑:程序博客网 时间:2024/06/12 01:48

/*************
calendar
2008/05/27
zhaoyz0304360
************
*/
if object_id('tempdb.dbo.#tb'is not null drop table #tb
set nocount on
create table #tb (dt varchar(10),wd nvarchar(10))

declare    @date datetime
set    @date = getdate()
declare    @m varchar(10)
set    @m = convert(varchar(8),@date,120)+'01'

declare    @nextm varchar(10)
set    @nextm = convert(varchar(10),dateadd(m,1, @m),120)
declare    @judge  varchar(10)
set    @judge  = @m

while    cast(@judge as datetime)<cast(@nextm as datetime)
begin
insert    into #tb select @judge ,datename(weekday,@judge)
set    @judge=convert(varchar(10),dateadd(day,1, @judge),120)
end

declare    @sql nvarchar(4000)
select    @sql=isnull(@sql+',','')+' max(isnull(case wd when '''+b.wd+''' then right(dt,2) end,'''')) as '''+b.wd+''''
from (
   
select  top 100 percent * from
    (
select distinct wd from #tb) a
   
order by
   
case a.wd
   
when datename(weekday,0) then 1
   
when datename(weekday,1) then 2
   
when datename(weekday,2) then 3
   
when datename(weekday,3) then 4
   
when datename(weekday,4) then 5
   
when datename(weekday,5) then 6
   
when datename(weekday,6) then 0
   
end) b
exec ('select '+@sql+'from #tb group by datepart(week,dt)')

set nocount off

--(WINDOWS+MS SQL-SERVER2000)

原创粉丝点击