午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

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

瀏覽:12日期:2023-09-15 20:49:58
目錄一、使用Case when 實(shí)現(xiàn)列轉(zhuǎn)為行(多行一列-->一行多列)1.1、實(shí)現(xiàn)效果1.2、列轉(zhuǎn)行(多行一列-->一行多列)二、使用 Case When 實(shí)現(xiàn)行轉(zhuǎn)列(一行多列-->多行一列)2.1、實(shí)現(xiàn)效果2.2、行轉(zhuǎn)列(一行多列-->多行一列)三、將結(jié)果集轉(zhuǎn)為一行四、將結(jié)果集轉(zhuǎn)為多行一、使用Case when 實(shí)現(xiàn)列轉(zhuǎn)為行(多行一列-->一行多列)1.1、實(shí)現(xiàn)效果

①原表效果

②實(shí)現(xiàn)將Course課程列內(nèi)容轉(zhuǎn)為行效果【實(shí)現(xiàn)將每個(gè)人員的課程信息合成一行,且獲取到課程總分】

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

sql語(yǔ)句

SELECT NAME,MAX(CASE WHEN COURSE='語(yǔ)文' THEN SCORE END) '語(yǔ)文',MAX(CASE WHEN COURSE='數(shù)學(xué)' THEN SCORE END) '數(shù)學(xué)',MAX(CASE WHEN COURSE='英語(yǔ)' THEN SCORE END) '英語(yǔ)',MAX(CASE WHEN COURSE='物理' THEN SCORE END) '物理',SUM(SCORE) '總分' FROM stu GROUP BY NAME;二、使用 Case When 實(shí)現(xiàn)行轉(zhuǎn)列(一行多列-->多行一列)2.1、實(shí)現(xiàn)效果

①原表效果

②實(shí)現(xiàn)將多個(gè)數(shù)字列轉(zhuǎn)為一列效果

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

sql語(yǔ)句

SELECT NAME, CASE WHEN LV = 1 THEN '語(yǔ)文' --常量 WHEN LV = 2 THEN '數(shù)學(xué)' --常量 WHEN LV = 3 THEN '英語(yǔ)' --常量 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 成績(jī) FROM ( SELECT * FROM course, (SELECT LEVEL LV FROM DUAL CONNECT BY LEVEL <= 4) ) --成績(jī)對(duì)應(yīng)的列數(shù)ORDER BY 1, 2;三、將結(jié)果集轉(zhuǎn)為一行

①查詢到每個(gè)部門的人數(shù)

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

②將查詢到的每個(gè)部門人數(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;

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

相關(guān)文章:
主站蜘蛛池模板: 欧美丰满一区二区免费视频 | 日韩少妇视频 | 欧美一级爱爱 | 中文字幕精品视频在线观看 | 亚洲婷婷av | 99热在线观看免费精品 | 欧美黄色大片免费观看 | 四虎在线免费观看 | 九一在线视频 | 黄色三级三级三级三级 | 亚洲一区a | 欧美日韩午夜 | 中文字幕一区不卡 | 激情久久视频 | 成人在线激情 | 中文字幕一区三区 | 久久99日韩 | 欧美日韩在线免费 | 久草精品在线 | 欧美91精品 | 日韩视频a| 麻豆性视频 | 久久久资源 | 97视频网站 | 成年人免费黄色 | 免费人成在线观看 | 国产精品理论在线 | aaaa毛片 | 久久在线观看 | 国产午夜视频在线 | av免费网站在线观看 | 欧美在线免费播放 | 欧美丰满一区二区免费视频 | 视频在线h| 亚洲aaaaaa | 色一情一乱一乱一区91 | 中文色网| 中文视频在线 | 国产传媒在线看 | 你懂的在线网站 | 一级二级毛片 |