这也写sql,有点太那个了吧,本来在程序里控制是非常简单的。楼主再考虑

解决方案 »

  1.   

    第一题:
    select sc2 - lag(sc2,1,0) over(order by sc2) result from 
    (select c1,sum(c2) over(order by rownum) sc2,
            lead(c1,1,0) over(order by rownum) lc1 
            from b)
    where c1 <> lc1SQL> select * from b;        C1         C2
    ---------- ----------
            20          2
            20          2
            30          2
            20          3
            20          2
            20          3
            30          37 rows selectedSQL> 
      6  /    RESULT
    ----------
             4
             2
             8
             3
    第二题:
    select decode(sc2 + lag(sc2,1,-1) over(order by sc1),0,sc1-75,-2,0,c1) result 
    from 
    (select c1,sum(c1) over(order by rownum) sc1,
            sign(sum(c1) over(order by rownum)-75) sc2  
            from b)SQL> 
      6  /    RESULT
    ----------
             0
             0
             0
            15
            20
            20
            30