ref:
SQL> 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  /

解决方案 »

  1.   

    大致思路是这,细节上改改
    select 
    gp_year,min(years)||'-'||max(years)
    from
    (
    select 
      a.years
      ,decode(a.year,b.years+1,seq_test.nextval,seq_test.currval) gp_year 
    from (select *,row_num() _rows from t order by years) a
       left join(select ,row_num() _rows from t order by years)b
      on a.rows = (b.rows+1)
    ) years_group  
    group by gp_year
      

  2.   

    select 
    gp_year,min(years)||'-'||max(years)
    from
    (
    select 
      a.years
      ,decode(a.year,b.years+1,seq_test.nextval,seq_test.currval) gp_year 
    from (select *,row_num() _rows from t order by years) a
       left join(select ,row_num() _rows from t order by years)b
      on a.rows = (b.rows+1)
    ) years_group  
    group by gp_year
      

  3.   

    按你所写的修改了一下
    select gp_year, min(years) || '-' || max(years)
      from (select a.years,
                   decode(a.years,
                          b.years+ 1,
                          seq_test.nextval,
                          seq_test.currval) gp_year
              from (select years, rownum rows1
              from t          order by years) a
              left join (select  rownum rows1
              from t 
             order by years) b
                on a.rows1  = (b.rows1 + 1)) year_group
     group by gp_year 
      
    为什么seq_test.nextval,seq_test.currval在这报不允许序号呢?
      

  4.   

    seq_test是序列,需先定义才能使用