select convert(varchar(10),sum(sumrainfall) as sumrainfall
from (
select dateadd(hh,-8,sumrveytime) as sumrveytime, sumrainfall from data) t
group by convert(varchar(10)
having sum(sumrainfall)>0

解决方案 »

  1.   


    select convert(varchar(10),sumrveytime,120) as sumrveytime,sum(sumrainfall) as sumrainfall
    from (
    select dateadd(hh,-8,sumrveytime) as sumrveytime, sumrainfall from data) t
    group by convert(varchar(10),sumrveytime,120)
    having sum(sumrainfall)>0
      

  2.   

    既然sumrainfall已经是累计量了,直接
    select count(*) from tb where sumrainfall > 0
      

  3.   

    谢谢,楼上
    不过,你写这个好像有点问题,sumrainfall是个总量,我想只有用第二天减去第一天的才的到的结果的。
      

  4.   

    select count(*) from
    (
      select * , val = sumrainfall - isnull((select top 1 sumrainfall from tb where sumrveytime < t.sumrveytime order sumrveytime desc),0) from tb t
    ) m
    where val > 0