文章詳情頁
Oracle中實現(xiàn)行列互轉(zhuǎn)的方法分享
瀏覽:2日期:2023-09-15 20:49:58
目錄一、使用Case when 實現(xiàn)列轉(zhuǎn)為行(多行一列-->一行多列)1.1、實現(xiàn)效果1.2、列轉(zhuǎn)行(多行一列-->一行多列)二、使用 Case When 實現(xiàn)行轉(zhuǎn)列(一行多列-->多行一列)2.1、實現(xiàn)效果2.2、行轉(zhuǎn)列(一行多列-->多行一列)三、將結(jié)果集轉(zhuǎn)為一行四、將結(jié)果集轉(zhuǎn)為多行一、使用Case when 實現(xiàn)列轉(zhuǎn)為行(多行一列-->一行多列)1.1、實現(xiàn)效果
①原表效果
②實現(xiàn)將Course課程列內(nèi)容轉(zhuǎn)為行效果【實現(xiàn)將每個人員的課程信息合成一行,且獲取到課程總分】
sql語句
SELECT NAME,MAX(CASE WHEN COURSE='語文' THEN SCORE END) '語文',MAX(CASE WHEN COURSE='數(shù)學(xué)' THEN SCORE END) '數(shù)學(xué)',MAX(CASE WHEN COURSE='英語' THEN SCORE END) '英語',MAX(CASE WHEN COURSE='物理' THEN SCORE END) '物理',SUM(SCORE) '總分' FROM stu GROUP BY NAME;二、使用 Case When 實現(xiàn)行轉(zhuǎn)列(一行多列-->多行一列)2.1、實現(xiàn)效果①原表效果
②實現(xiàn)將多個數(shù)字列轉(zhuǎn)為一列效果
sql語句
SELECT NAME, CASE WHEN LV = 1 THEN '語文' --常量 WHEN LV = 2 THEN '數(shù)學(xué)' --常量 WHEN LV = 3 THEN '英語' --常量 WHEN LV = 4 THEN '物理' --常量 END 科目, CASE WHEN LV = 1 THEN langu --列名 WHEN LV = 2 THEN math--列名 WHEN LV = 3 THEN english--列名 WHEN LV = 4 THEN pycial--列名 END 成績 FROM ( SELECT * FROM course, (SELECT LEVEL LV FROM DUAL CONNECT BY LEVEL <= 4) ) --成績對應(yīng)的列數(shù)ORDER BY 1, 2;三、將結(jié)果集轉(zhuǎn)為一行①查詢到每個部門的人數(shù)
--查詢每個部門的人數(shù) SELECT DEPTNO, COUNT(1) CN FROM EMP GROUP BY DEPTNO ORDER BY 1;②將查詢到的每個部門人數(shù)的結(jié)果集【轉(zhuǎn)為一行】
--將上面的結(jié)果轉(zhuǎn)為一行,可以使用 SUM 或者 COUNT 來求出。 SELECT SUM(CASE WHEN DEPTNO = 10 THEN 1 END) D_10,SUM(CASE WHEN DEPTNO = 20 THEN 1 END) D_20,SUM(CASE WHEN DEPTNO = 30 THEN 1 END) D_30 FROM EMP; --也可以使用下面的方法。 SELECT CASE WHEN DEPTNO = 10 THEN CN END D_10,CASE WHEN DEPTNO = 20 THEN CN END D_20,CASE WHEN DEPTNO = 30 THEN CN END D_30 FROM (SELECT DEPTNO, COUNT(1) CN FROM EMP GROUP BY DEPTNO); --和剛講的一樣,生成了三行三列數(shù)據(jù),使用 MAX 來獲取。 SELECT MAX(CASE WHEN DEPTNO = 10 THEN CN END) D_10,MAX(CASE WHEN DEPTNO = 20 THEN CN END) D_20,MAX(CASE WHEN DEPTNO = 30 THEN CN END) D_30 FROM (SELECT DEPTNO, COUNT(1) CN FROM EMP GROUP BY DEPTNO);四、將結(jié)果集轉(zhuǎn)為多行到此這篇關(guān)于Oracle中實現(xiàn)行列互轉(zhuǎn)的方法分享的文章就介紹到這了,更多相關(guān)Oracle行列互轉(zhuǎn)內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
標(biāo)簽:
Oracle
數(shù)據(jù)庫
相關(guān)文章:
排行榜
