v
0     
12    
13    
22    
0     
0     
0     
14    
3
0
1
2以上数据,用SQL如何得到这个结果??(按顺序及大于0值分组?)
v         st
0         1     
12        2
13        2
22        2
0         3
0         3
0         3
14        4
3         4
0         5
1         6
2         6 

解决方案 »

  1.   

    SQL> select a.*, sum(a.pp) over(order by hiredate, rowid) xm
      2    from (select hiredate,
      3                 deptno,
      4                 decode(lag(deptno, 1, deptno) over(order by hiredate, rowid), deptno, 0, 1) pp
      5            from scott.emp) a
      6  /
     
    HIREDATE    DEPTNO         PP         XM
    ----------- ------ ---------- ----------
    1980-12-17      20          0          0
    1981-2-20       30          1          1
    1981-2-22       30          0          1
    1981-4-2        20          1          2
    1981-5-1        30          1          3
    1981-6-9        10          1          4
    1981-9-8        30          1          5
    1981-9-28       30          0          5
    1981-11-17      10          1          6
    1981-12-3       30          1          7
    1981-12-3       20          1          8
    1982-1-23       10          1          9
    1987-4-19       20          1         10
    1987-5-23       20          0         10
     
    14 rows selected
    源自http://space.itpub.net/12932950/viewspace-661576解决了