国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

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

Oracle中實現行列互轉的方法分享

瀏覽:4日期:2023-09-15 20:49:58
目錄一、使用Case when 實現列轉為行(多行一列-->一行多列)1.1、實現效果1.2、列轉行(多行一列-->一行多列)二、使用 Case When 實現行轉列(一行多列-->多行一列)2.1、實現效果2.2、行轉列(一行多列-->多行一列)三、將結果集轉為一行四、將結果集轉為多行一、使用Case when 實現列轉為行(多行一列-->一行多列)1.1、實現效果

①原表效果

②實現將Course課程列內容轉為行效果【實現將每個人員的課程信息合成一行,且獲取到課程總分】

1.2、列轉行(多行一列-->一行多列)

sql語句

SELECT NAME,MAX(CASE WHEN COURSE='語文' THEN SCORE END) '語文',MAX(CASE WHEN COURSE='數學' THEN SCORE END) '數學',MAX(CASE WHEN COURSE='英語' THEN SCORE END) '英語',MAX(CASE WHEN COURSE='物理' THEN SCORE END) '物理',SUM(SCORE) '總分' FROM stu GROUP BY NAME;二、使用 Case When 實現行轉列(一行多列-->多行一列)2.1、實現效果

①原表效果

②實現將多個數字列轉為一列效果

2.2、行轉列(一行多列-->多行一列)

sql語句

SELECT NAME, CASE WHEN LV = 1 THEN '語文' --常量 WHEN LV = 2 THEN '數學' --常量 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) ) --成績對應的列數ORDER BY 1, 2;三、將結果集轉為一行

①查詢到每個部門的人數

--查詢每個部門的人數 SELECT DEPTNO, COUNT(1) CN FROM EMP GROUP BY DEPTNO ORDER BY 1;

②將查詢到的每個部門人數的結果集【轉為一行】

--將上面的結果轉為一行,可以使用 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); --和剛講的一樣,生成了三行三列數據,使用 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);四、將結果集轉為多行

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 開始排序,而每列里面只有一組有數據。也就是 RN 相同的在每列里面只有一條數據 ROW_NUMBER() OVER(PARTITION BY JOB ORDER BY ENAME) RN FROM EMP) GROUP BY RN ORDER BY RN;

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

標簽: Oracle 數據庫
相關文章:
主站蜘蛛池模板: 视频综合网 | 亚洲国产一级毛片 | 俄罗斯aaaa一级毛片 | 日韩欧美国产高清在线观看 | 中文字幕亚洲一区二区v@在线 | 成人午夜影视 | 国产无套视频在线观看香蕉 | 精品日韩欧美一区二区三区 | 久草在线免费色站 | 在线观看国产一区二区三区99 | 精品久久看 | 亚洲一区 中文字幕 久久 | 真人一级毛片 | 亚洲久久久久久久 | 国产成人在线小视频 | 成年人免费看 | 成年人免费黄色片 | 手机在线成人精品视频网 | a站在线观看 | 美女张开腿黄网站免费国产 | 亚洲 欧美 丝袜 | 国产午夜伦伦伦午夜伦 | 日本一区二区三区不卡视频中文字幕 | 给我一个可以看片的www日本 | 国产精品免费观看视频播放 | 黄色毛片a | 有码 在线 | 欧美成人精品福利在线视频 | 美女被拍拍拍拍拍拍拍拍 | 欧美一级鲁丝片 | 久久久91精品国产一区二区 | 亚洲成a人片在线网站 | 亚洲国产日韩欧美一区二区三区 | 97精品久久久久中文字幕 | 亚洲国产精品自在现线让你爽 | 天堂1在线观看 | 特黄特黄 | 精品国产呦系列在线看 | 日产国产精品亚洲系列 | 国产成人香蕉久久久久 | 国产特级全黄一级毛片不卡 |