如有表资料如下  部门   人员
  A      张XX
  A      李XX
  A      王XX
  A      陈XX 
  A      钱XX   ......  B      黄XX
  B      朱XX
  B      金XX
  B      XXX
   ................
  现在想让它如下显示(只用SELECT 语句)  假如一行只显示同部门的三个人员。   部门  人员1   人员2   人员3 
   A    张XX    李XX    王XX
   A    陈XX    钱XX       B    黄XX   朱XX     金XX
   B    XXX
   ...............
    诚心向大侠请教。
   TKS!!! 

解决方案 »

  1.   

    建议rownum 别名为RN,然后RN/3分组,按mod(rn,3)来对应3个字段的列
      

  2.   


     小弟刚学ORACLE,,,    不太明白。。能否给出相应的SQL ,,谢谢!!
      

  3.   


    with tt as(select 'A' id,'张三' name from dual
      union all select 'A','李四' from dual
      union all select 'A','王五' from dual
      union all select 'A','赵六' from dual
      union all select 'B','王文' from dual)select id 部门,max(decode(mod(rn-1,3),0,name))人员1, 
      max(decode(mod(rn-1,3),1,name)) 人员2,
      max(decode(mod(rn-1,3),2,name)) 人员3
    from(
      select tt.*,row_number()over(partition by id order by rownum)rn
      from tt)
    group by id,trunc((rn-1)/3)部门 人员1 人员2 人员3
    A 张三 李四 王五
    A 赵六
    B 王文