应该是
现在要求统计每年的时段降水量如 当年12月25日至次年1月5日时间段的降水总量     时段                           时段降水总量
1971年12月25日至1972年1月5日          XX
1972年12月25日至1973年1月5日          XX
1973年12月25日至1974年1月5日          XX
...
1999年12月25日至2000年1月5日          XX

解决方案 »

  1.   

    --创建测试环境
    set nocount on
    go
    create table #
    (
      [年] int,[月] int,[日] int,
      [降水] float
    )
    insert #
    select 1971,1,1,23.6 union
    select 1971,1,2,21.8 union
    select 1972,1,2,21.8 union
    select 1982,2,22,32.2 union
    select 2000,12,31,121--测试
    declare @tb table([时段] varchar(30),[时段降水总量] numeric(4,2))
    declare @min int,@max int,@sdt datetime,@edt datetime
    select @min=min([年]),@max=max([年]) from #while @min<@max
    begin
        set @sdt=convert(datetime,(convert(varchar,@min)+'-12-25'))    
        set @edt=convert(datetime,(convert(varchar,@min+1)+'-1-5')) 
        insert @tb
        select convert(varchar,@min)+'年12月25日至'+convert(varchar,@min+1)+'年1月5日',
               (select isnull(sum([降水]),0) from # where convert(datetime,(convert(varchar,[年])+'-'+convert(varchar,[月])+'-'+convert(varchar,[日]))) between @sdt and @edt)
        set @min=@min+1
    end
    select * from @tb--删除测试环境
    drop table #--结果
    /*
    时段                             时段降水总量 
    ------------------------------ ------ 
    1971年12月25日至1972年1月5日          21.80
    1972年12月25日至1973年1月5日          .00
    1973年12月25日至1974年1月5日          .00
    1974年12月25日至1975年1月5日          .00
    1975年12月25日至1976年1月5日          .00
    1976年12月25日至1977年1月5日          .00
    1977年12月25日至1978年1月5日          .00
    1978年12月25日至1979年1月5日          .00
    1979年12月25日至1980年1月5日          .00
    1980年12月25日至1981年1月5日          .00
    1981年12月25日至1982年1月5日          .00
    1982年12月25日至1983年1月5日          .00
    1983年12月25日至1984年1月5日          .00
    1984年12月25日至1985年1月5日          .00
    1985年12月25日至1986年1月5日          .00
    1986年12月25日至1987年1月5日          .00
    1987年12月25日至1988年1月5日          .00
    1988年12月25日至1989年1月5日          .00
    1989年12月25日至1990年1月5日          .00
    1990年12月25日至1991年1月5日          .00
    1991年12月25日至1992年1月5日          .00
    1992年12月25日至1993年1月5日          .00
    1993年12月25日至1994年1月5日          .00
    1994年12月25日至1995年1月5日          .00
    1995年12月25日至1996年1月5日          .00
    1996年12月25日至1997年1月5日          .00
    1997年12月25日至1998年1月5日          .00
    1998年12月25日至1999年1月5日          .00
    1999年12月25日至2000年1月5日          .00*/