方法二: 使用lag/lead分析函数进行处理.. 楼上的方法确实挺好用就是觉得表扫描/表连接比较多, 可能数据量大了. 速度会比较慢, 当然我的这种方法由于使用分析函数使用的比较频繁.所以排序量可能比上一种要多..
方法三: 今天早上wildflower给了我这个答案, 顿时觉得耳目一新啊..就贴出来与大家一起共享了^_^.
SQL> spool aaa.logSQL> set echo onSQL> select * from t;
no rows selected
SQL> select * from t;
FPHM KSHM---------- ---------- 2014 1 2014 2 2014 3 2014 4 2014 5 2014 7 2014 8 2014 9 2013 120 2013 121 2013 122
FPHM KSHM---------- ---------- 2013 124 2013 125
13 rows selected.
SQL> @bbb.sqlSQL> select b.fphm,min(b.kshm),max(b.kshm) 2 from ( 3 select a.*,to_number(a.kshm-rownum) cc 4 from ( 5 select * from t order by fphm,kshm 6 ) a 7 ) b 8 group by b.fphm,b.cc 9 /
FPHM MIN(B.KSHM) MAX(B.KSHM)---------- ----------- ----------- 2013 120 122 2013 124 125 2014 1 5 2014 7 9
SQL>