这样处理当可行:
在一张临时表中插入一年的日历,然后再和你的表LEFT OUTER JOIN即可把你的数据搞出来啦

解决方案 »

  1.   

    /*--
    得到两个日期之间的日期列表--调用示例
    select * from dbo.f_getdate('2003-01-01','2003-01-20')
    */if exists(select 1 from sysobjects where id=object_id('f_getdate') and objectproperty(id,'IsInlineFunction')=0)
    drop function f_getdatego
    create function f_getdate(@dt1 datetime,@dt2 datetime)
    returns @re table(id int identity(0,1),dt datetime)
    as
    begin
    declare @i int
    select @i=datediff(day,@dt1,@dt2)+1

    while @i>1
    begin
    insert into @re(dt) select top 100 @dt1 from syscolumns
    set @i=@i-100
    end
    delete from @re where id>datediff(day,@dt1,@dt2)

    update @re set dt=dateadd(day,id,dt)
    return
    end
    go