create table #你的表 (时间 datetime,液位 numeric(10,1),标志位 bit)
insert #你的表 values('2003-09-13 11:11:11',        19.8    ,    1)
insert #你的表 values('2003-09-14 11:13:14',        13.9   ,     0)
insert #你的表 values('2003-09-15 11:11:11',        15.8  ,      1)
insert #你的表 values('2003-09-16 11:13:14',        10.9 ,       0)
select *,0 flag into #b from #你的表
declare @a int
set @a=0
update #b set @a=case when 标志位=0 then @a else @a+1 end,flag=@aselect min(时间) 开始时间,max(时间) 结束时间,sum(case when 标志位=1 then 液位 else -液位 end) 使用量 from #b group by flaggo
drop table #你的表,#b

解决方案 »

  1.   

    对不起,我少说了一句,该原始表格的数据也会不断增加的,而且是成对增加的,难道需要我写n句insert 语句吗?
      

  2.   

    不用写n句insert 语句阿!
    这样写!insert into #你的表 select 时间,液位,标志位 from 原来的表 where 时间 between 开始时间 and 结束时间
      

  3.   

    这里我是举例呀,我这是调试给你看呀老大。你又没说表名我当然写了#你的表select *,0 flag into #b from 你的表
    declare @a int
    set @a=0
    update #b set @a=case when 标志位=0 then @a else @a+1 end,flag=@aselect min(时间) 开始时间,max(时间) 结束时间,sum(case when 标志位=1 then 液位 else -液位 end) 使用量 from #b group by flagdrop table #b这样就OK了,当然你要把中文部分改为你实际的列名和表名。