我有一个问题就是如何实现列转行是使用pivot吗试了好多次都没成功
也不知道是为啥

也没百度到正常文字:加里曼丹岛属热带雨林带。岛上大部分地区河流可通航,为贸易和商业活动的重要生命线,常常也是唯一命脉。北部岛形趋狭,河流通航里程很少超过160千米,常常比这更短,故该岛北部腹地在上世纪80世代以前曾长期处于封闭的原始社会状态。
正常文字:加里曼丹岛属热带雨林带。岛上大部分地区河流可通航,为贸易和商业活动的重要生命线,常常也是唯一命脉。北部岛形趋狭,河流通航里程很少超过160千米,常常比这更短,故该岛北部腹地在上世纪80世代以前曾长期处于封闭的原始社会状态。

解决方案 »

  1.   

    行转列
    select * from (select name, nums from ( SELECT 1 id, '苹果' name, 1000
    nums FROM DUAL UNION ALL 
     SELECT 2 id, '苹果' name, 2000
    nums FROM DUAL UNION ALL 
     SELECT 3 id, '苹果' name, 4000
    nums FROM DUAL UNION ALL 
     SELECT 4 id, '橘子' name, 5000
    nums FROM DUAL UNION ALL 
     SELECT 5 id, '橘子' name, 3000
    nums FROM DUAL UNION ALL 
     SELECT 6 id, '葡萄' name, 3500
    nums FROM DUAL UNION ALL 
     SELECT 7 id, '芒果' name, 4200
    nums FROM DUAL UNION ALL 
     SELECT 8 id, '芒果' name, 5500
    nums FROM DUAL)) pivot (sum(nums) for name in ('苹果' 苹果, '橘子' 橘子, '葡萄' 葡萄, '芒果' 芒果));

    SELECT T.A,LISTAGG(B,',') WITHIN GROUP (ORDER BY B DESC)  FROM (
    SELECT 1 A ,1 B FROM DUAL UNION ALL
    SELECT 1 A ,2 B FROM DUAL UNION ALL
    SELECT 2 A ,3 B FROM DUAL UNION ALL
    SELECT 3 A ,4 B FROM DUAL UNION ALL
    SELECT 3 A ,5 B FROM DUAL ) T
    GROUP BY T.A ;列传行
     select id , name, jidu, xiaoshou from ( SELECT 1 id,'苹果' name,1000 Q1,2000 Q2,3300 Q3,5000 Q4
     FROM DUAL UNION ALL 
     SELECT 2 id,'橘子' name,3000 Q1,3000 Q2,3200 Q3,1500 Q4
     FROM DUAL UNION ALL 
     SELECT 3 id,'香蕉' name,2500 Q1,3500 Q2,2200 Q3,2500 Q4
     FROM DUAL UNION ALL 
     SELECT 4 id,'葡萄' name,1500 Q1,2500 Q2,1200 Q3,3500 Q4
     FROM DUAL) unpivot (xiaoshou for jidu in (q1, q2, q3, q4) ) ;
      

  2.   

    http://www.itpub.net/thread-1017026-1-1.html
    行列转换大全,你想要的这里面都有说明。
      

  3.   

    http://www.itpub.net/thread-1017026-1-1.html