我有一個問題
就是如何實作列轉行
是使用pivot嗎
試了好多次都沒成功
也不知道是為啥
也沒百度到


正常文字:加里曼丹島屬熱帶雨林帶。島上大部分地區河流可通航,為貿易和商業活動的重要生命線,常常也是唯一命脈。北部島形趨狹,河流通航里程很少超過160千米,常常比這更短,故該島北部腹地在上世紀80世代以前曾長期處于封閉的原始社會狀態。
正常文字:加里曼丹島屬熱帶雨林帶。島上大部分地區河流可通航,為貿易和商業活動的重要生命線,常常也是唯一命脈。北部島形趨狹,河流通航里程很少超過160千米,常常比這更短,故該島北部腹地在上世紀80世代以前曾長期處于封閉的原始社會狀態。
uj5u.com熱心網友回復:
行轉列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) ) ;
uj5u.com熱心網友回復:
http://www.itpub.net/thread-1017026-1-1.html行列轉換大全,你想要的這里面都有說明。
uj5u.com熱心網友回復:
http://www.itpub.net/thread-1017026-1-1.html轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/34700.html
標籤:開發
