如何转换下列的结果集,不想用break on

解决方案 »

  1.   

    想进行下列转换
    a        b       c
    1        12        13
    1        22        23
    2        222        223
    2        233        243a        b        c
    1        12        13
             22        23
    2        222        223
            233        243
      

  2.   

    select 
    decode(rn,1,a,null) a,b,c
    from
    (
      select row_number() over (partition by a) rn,*
      from table
    )t
      

  3.   

    为什么我执行了一下不行呢?说是在窗口说明中丢失 ORDER BY 表达式
      

  4.   

    1  select
      2  decode(rn,1,a,null) a,b,c
      3  from
      4  (
      5    select row_number() over (partition by a ) rn,*
      6    from table
      7* )t
    SQL> /
      select row_number() over (partition by a ) rn,*
             *
    ERROR 位于第 5 行:
    ORA-30485: 在窗口说明中丢失 ORDER BY 表达式
      

  5.   

    select 
    decode(rn,1,a,null) a,b,c
    from
    (
      select row_number() over (partition by a order by b) rn,*
      from table
    )t
      

  6.   

    楼上那位大哥,冒似还是不行
    SQL> select 
      2  decode(rn,1,a,null) a,b,c
      3  from
      4  (
      5    select row_number() over (partition by a order by b) rn,*
      6    from table
      7  )t;
      select row_number() over (partition by a order by b) rn,*
                                                              *
    ERROR 位于第 5 行:
    ORA-00936: 缺少表达式
      

  7.   

    参考这个
    SELECT decode(rid, 1, table_name, NULL) AS tab_name, column_name
    FROM (SELECT t.table_name, t.column_name,
                  row_number() over(PARTITION BY table_name ORDER BY column_name) AS rid
           FROM user_tab_cols t)