原始表结果:
人员编号    序号   项目     价格   单位   数量   
 0001      01    内容1    1价格           1
 0001      02    内容2    2..           2
 0001      03    内容3    3..           3
 0001      04    内容4    4..           4
 0001      05    内容5    5..           5 0002      01    内容1    1..           10
 0002      02    内容2    2..           20
...
需要效果
人员编号    序号   项目      价格     单位  数量      序号   项目        价格   单位 数量    
 0001      01    内容1    1价格           1       02    内容2       2          2
 0001      03    内容3    3价格           3       04    内容4       4          4
 0001      05    内容5    5价格           5       无值补空... 0002      01    内容1    1价格          10       02    内容2       2..       20
...
对2取余,奇数列放在左边,偶数列放在右边,两边不平衡补空,如何解决,谢谢!

解决方案 »

  1.   

    select  人员编号,max(decode(mod(to_number(序号),2),0,序号,null) 序号1,
            max(decode(mod(to_number(序号),2),0,项目,null) 项目1,
            max(decode(mod(to_number(序号),2),0,价格,null) 价格1,
            max(decode(mod(to_number(序号),2),0,单位,null) 单位1,
            max(decode(mod(to_number(序号),2),0,数量 ,null) 数量 1,
            max(decode(mod(to_number(序号),2),1,序号,null) 序号2,
            max(decode(mod(to_number(序号),2),1,项目,null) 项目2,
            max(decode(mod(to_number(序号),2),1,价格,null) 价格2,
            max(decode(mod(to_number(序号),2),1,单位,null) 单位2,
            max(decode(mod(to_number(序号),2),1,数量 ,null) 数量 2
    from  表名
    group by 人员编号,trunc(to_number(序号)/2)
      

  2.   

    select  人员编号,max(decode(mod(to_number(序号),2),0,序号,null) 序号1,
            max(decode(mod(to_number(序号),2),0,项目,null) 项目1,
            max(decode(mod(to_number(序号),2),0,价格,null) 价格1,
            max(decode(mod(to_number(序号),2),0,单位,null) 单位1,
            max(decode(mod(to_number(序号),2),0,数量 ,null) 数量 1,
            max(decode(mod(to_number(序号),2),1,序号,null) 序号2,
            max(decode(mod(to_number(序号),2),1,项目,null) 项目2,
            max(decode(mod(to_number(序号),2),1,价格,null) 价格2,
            max(decode(mod(to_number(序号),2),1,单位,null) 单位2,
            max(decode(mod(to_number(序号),2),1,数量 ,null) 数量 2
    from  表名
    group by 人员编号,trunc((to_number(序号)-1)/2)上面的分组有点错误