国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術文章
文章詳情頁

Oracle使用pivot和unpivot函數(shù)實現(xiàn)行列轉換

瀏覽:6日期:2023-09-15 20:49:58
目錄一、需求說明 二、實現(xiàn)方法2.1、實現(xiàn)將上圖內容轉為行——decode函數(shù)2.2、實現(xiàn)將上圖內容轉為行——case when函數(shù)2.3、實現(xiàn)將上圖內容轉為行——pivot函數(shù)2.4、實現(xiàn)將上圖內容轉為列——unpivot函數(shù)一、需求說明

項目開發(fā)過程中涉及到oracle數(shù)據(jù)庫的數(shù)據(jù)操作;但是需要將數(shù)據(jù)進行列的互轉,通過查閱資料可知在oracle中有三種方式可以實現(xiàn)行列互轉:

①使用decode 函數(shù);

②使用case when 函數(shù);

③使用pivot函數(shù);

參考:Oracle中實現(xiàn)行列互轉的方法分享

二、實現(xiàn)方法

我這里有一個數(shù)據(jù)表內容如下:

2.1、實現(xiàn)將上圖內容轉為行——decode函數(shù)select 'name', max(decode('course', '語文', 'score')) 語文, max(decode('course', '數(shù)學', 'score')) 數(shù)學, max(decode('course', '英語', 'score')) 英語, sum('score') 總分from 'grade'group by 'name';2.2、實現(xiàn)將上圖內容轉為行——case when函數(shù)select 'name', max(case when 'course' = '語文' then 'score' end) 語文, max(case when 'course' = '數(shù)學' then 'score' end) 數(shù)學, max(case when 'course' = '英語' then 'score' end) 英語, sum('score') 總分from 'grade' group by 'name';2.3、實現(xiàn)將上圖內容轉為行——pivot函數(shù)

pivot函數(shù)的語法:

pivot(聚合函數(shù) for 列名 in(類型)) select t.* from((select * from 原表名稱) pivot( max(需轉的列名稱) for 需轉的列名稱 in(需轉列對應的值1,需轉列對應的值2,需轉列對應的值3 ))t

SELECT t.*,(t.語文+t.數(shù)學+t.英語)總分 from ((SELECT 'name','course','score' from 'grade')pivot( max('score') for 'course' in('語文' 語文,'數(shù)學' 數(shù)學,'英語' 英語)))t ORDER BY 'name';

2.4、實現(xiàn)將上圖內容轉為列——unpivot函數(shù)

需要轉的內容如下圖:

unpivot函數(shù)的語法:

SELECT 列名稱,需定義的列1名稱,需定義的列2名稱 from 表名稱 unpivot (需定義的列2名稱 for 需定義的列1名稱 in(列2值1,列2值2,列2值3));

SELECT 'name' 名字,course 課程,score 分數(shù) from 'grade2' unpivot (score for course in('chinese','math','english'));

SELECT 名字,course 課程,score 分數(shù) from (SELECT 'name' 名字,'chinese' 語文,'math' 數(shù)學,'english' 英語 from 'grade2') unpivot (score for course in(語文,數(shù)學,英語))

到此這篇關于Oracle使用pivot和unpivot函數(shù)實現(xiàn)行列轉換的文章就介紹到這了,更多相關Oracle行列轉換內容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持好吧啦網(wǎng)!

主站蜘蛛池模板: 淮南市| 绍兴县| 重庆市| 泗水县| 佛冈县| 合作市| 长海县| 二手房| 蕉岭县| 阳东县| 石台县| 阳新县| 台中县| 区。| 鄢陵县| 图木舒克市| 岢岚县| 佛坪县| 类乌齐县| 进贤县| 嘉义市| 广水市| 县级市| 木兰县| 买车| 闽清县| 武冈市| 涪陵区| 商都县| 灵台县| 庄河市| 云南省| 全椒县| 富平县| 鄂伦春自治旗| 河源市| 黄陵县| 黑河市| 高青县| 顺昌县| 元阳县|