久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

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

Oracle中實現(xiàn)行列互轉(zhuǎn)的方法分享

瀏覽:4日期: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)將每個人員的課程信息合成一行,且獲取到課程總分】

1.2、列轉(zhuǎn)行(多行一列-->一行多列)

sql語句

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) '英語',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)為一列效果

2.2、行轉(zhuǎn)列(一行多列-->多行一列)

sql語句

SELECT NAME, CASE WHEN LV = 1 THEN '語文' --常量 WHEN LV = 2 THEN '數(shù)學' --常量 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) ) --成績對應的列數(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)為多行

SELECT MAX(CASE JOB WHEN 'CLERK' THEN ENAME END) CLERK,MAX(CASE JOB WHEN 'ANALYST' THEN ENAME END) ANALYST, MAX(CASE JOB WHEN 'MANAGER' THEN ENAME END) MANAGER,MAX(CASE JOB WHEN 'PRESIDENT' THEN ENAME END) PRESIDENT,MAX(CASE JOB WHEN 'SALESMAN' THEN ENAME END) SALESMAN FROM (SELECT ENAME,JOB,--每組都是從 1 開始排序,而每列里面只有一組有數(shù)據(jù)。也就是 RN 相同的在每列里面只有一條數(shù)據(jù) ROW_NUMBER() OVER(PARTITION BY JOB ORDER BY ENAME) RN FROM EMP) GROUP BY RN ORDER BY RN;

到此這篇關于Oracle中實現(xiàn)行列互轉(zhuǎn)的方法分享的文章就介紹到這了,更多相關Oracle行列互轉(zhuǎn)內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持好吧啦網(wǎng)!

相關文章:
主站蜘蛛池模板: 探索| 中方县| 义乌市| 保康县| 上杭县| 苏尼特右旗| 比如县| 湟中县| 海南省| 偏关县| 绵竹市| 景宁| 闽侯县| 夹江县| 平凉市| 孙吴县| 石棉县| 榆中县| 合川市| 阿拉尔市| 多伦县| 保山市| 长汀县| 舟山市| 新昌县| 河源市| 林甸县| 镶黄旗| 门源| 莱西市| 梁平县| 抚顺县| 祥云县| 大兴区| 磐石市| 尼玛县| 灵寿县| 金堂县| 高淳县| 平定县| 柘城县|