1. 条件:有表T,该表只有一列i,该列i信息(数据)如下: 1 NULL 2 3 8 …..2. 问题:用SQL语句求如下的结果集(一列): 0 1 2 3 4 …..请使用一条语句得到结果(不得使用子查询)

解决方案 »

  1.   

    --难道是这样?
    select rownum-1 from T;
      

  2.   

    SQL> with tb as
      2  (select 1  id from dual union all
      3  select NULL   from dual union all
      4  select 2   from dual union all
      5  select 3   from dual union all
      6  select 8   from dual )
      7  select id, row_number() over(order by id nulls first)-1 from tb
      8  /
     
            ID ROW_NUMBER()OVER(ORDERBYIDNULL
    ---------- ------------------------------
                                            0
             1                              1
             2                              2
             3                              3
             8                              4
     
      

  3.   

    不会这么简单吧select i from t where i is not null order by i
      

  4.   

    问题描述的太不清楚了,难道仅仅是排序?SELECT * FROM T ORDER BY I NULLS LAST;