我有一个这样的表
user  group
001    A
001    B
001    C
002    D
002    Z
002    Y
002    X
怎么样才能得到这样的结果
001  A  B  C
002  X  Y  Z  D

解决方案 »

  1.   


    row_number不知道怎么用,能否给点指点
      

  2.   

    试试
     SELECT USER,
            MAX(DECODE(RM, 1, GROUP, NULL)) group1,
            MAX(DECODE(RM, 2, GROUP, NULL)) group2,
            MAX(DECODE(RM, 3, GROUP, NULL)) group3,
            MAX(DECODE(RM, 4, GROUP, NULL)) group4
       FROM (SELECT USER,
                    GROUP,
                    ROW_NUMBER() OVER(PARTITION BY USER ORDER BY GROUP) RM
               FROM tablename)
      GROUP BY USER;
      

  3.   

    这里有一个问题,表里的GROUP数据使动态的,可能不止四个,甚至可能有几十个,如果这样的话就要加几十个decode,虽然可以得到结果,但是我觉得这样写应该不使最好的结果吧.