最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2023年06月15日 09:13:06   作者:牛奶咖啡13  
這篇文章主要為大家總結(jié)了Oracle中實(shí)現(xiàn)行列互轉(zhuǎn)的簡(jiǎn)單方法,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

一、使用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)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Oracle19c安裝與基本配置教程(超詳細(xì)!)

    Oracle19c安裝與基本配置教程(超詳細(xì)!)

    oracle19c數(shù)據(jù)庫(kù)安裝相對(duì)于oracle12c安裝還是有些不一樣的,所以今天再來記錄一下安裝過程,下面這篇文章主要給大家介紹了關(guān)于Oracle19c安裝與基本配置的超詳細(xì)教程,需要的朋友可以參考下
    2023-01-01
  • Windows下編寫批處理腳本來啟動(dòng)和重置Oracle數(shù)據(jù)庫(kù)

    Windows下編寫批處理腳本來啟動(dòng)和重置Oracle數(shù)據(jù)庫(kù)

    這篇文章主要介紹了Windows下編寫cmd腳本來對(duì)Oracle數(shù)據(jù)庫(kù)執(zhí)行啟動(dòng)和重置的方法,只需在bat文件中保存cmd shell之后就可以雙擊使用,簡(jiǎn)單粗暴,需要的朋友可以參考下
    2016-03-03
  • Oracle數(shù)據(jù)庫(kù)自定義類型type的用法詳解

    Oracle數(shù)據(jù)庫(kù)自定義類型type的用法詳解

    這篇文章主要介紹了Oracle數(shù)據(jù)庫(kù)自定義類型type的用法詳解,Oracle?數(shù)據(jù)庫(kù)的概念和其它數(shù)據(jù)庫(kù)不一樣,這里的數(shù)據(jù)庫(kù)是一個(gè)操作系統(tǒng)只有一個(gè)庫(kù),可以看作是?Oracle?就只有一個(gè)大數(shù)據(jù)庫(kù),需要的朋友可以參考下
    2023-07-07
  • Oracle表結(jié)構(gòu)查詢之如何獲取列信息與注釋

    Oracle表結(jié)構(gòu)查詢之如何獲取列信息與注釋

    本文主要介紹了Oracle數(shù)據(jù)庫(kù)中表結(jié)構(gòu)信息的基本知識(shí),包括表名、列名、數(shù)據(jù)類型、數(shù)據(jù)長(zhǎng)度、可空性、默認(rèn)值以及字段注釋等,這些信息對(duì)于理解數(shù)據(jù)庫(kù)設(shè)計(jì)和維護(hù)非常重要,同時(shí),提供了基本的查詢示例
    2024-10-10
  • plsql連接oracle數(shù)據(jù)庫(kù)報(bào)ora 12154錯(cuò)誤解決方法

    plsql連接oracle數(shù)據(jù)庫(kù)報(bào)ora 12154錯(cuò)誤解決方法

    今天遇到一個(gè)問題,plsql連接oracle數(shù)據(jù)庫(kù)報(bào)ora 12154錯(cuò)誤,本文將為您詳細(xì)介紹此等問題的解決方法
    2012-11-11
  • 解析Oracle查詢和刪除JOB的SQL

    解析Oracle查詢和刪除JOB的SQL

    本篇文章是對(duì)Oracle查詢和刪除JOB的SQL的實(shí)現(xiàn)方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-07-07
  • Oracle數(shù)據(jù)行拆分多行方法示例

    Oracle數(shù)據(jù)行拆分多行方法示例

    oracle數(shù)據(jù)庫(kù)使用過程中,怎樣將一行或者多行數(shù)據(jù)分割成需要的多行數(shù)據(jù),本文我們就來看看具體方法,需要的朋友可以參考。
    2017-10-10
  • Oracle數(shù)據(jù)庫(kù)執(zhí)行計(jì)劃的查看與分析技巧

    Oracle數(shù)據(jù)庫(kù)執(zhí)行計(jì)劃的查看與分析技巧

    在 Oracle 數(shù)據(jù)庫(kù)中,執(zhí)行計(jì)劃能夠幫助我們深入了解 SQL 語(yǔ)句在數(shù)據(jù)庫(kù)內(nèi)部的執(zhí)行細(xì)節(jié),進(jìn)而優(yōu)化查詢性能、提升系統(tǒng)效率,執(zhí)行計(jì)劃是 Oracle 數(shù)據(jù)庫(kù)優(yōu)化器為 SQL 語(yǔ)句生成的一種執(zhí)行藍(lán)圖,本文給大家介紹了Oracle數(shù)據(jù)庫(kù)執(zhí)行計(jì)劃的查看與分析技巧,需要的朋友可以參考下
    2024-12-12
  • oracle數(shù)據(jù)匹配merge into的實(shí)例詳解

    oracle數(shù)據(jù)匹配merge into的實(shí)例詳解

    這篇文章主要介紹了oracle數(shù)據(jù)匹配merge into的實(shí)例詳解的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下
    2017-10-10
  • 詳解Oracle游標(biāo)的簡(jiǎn)易用法

    詳解Oracle游標(biāo)的簡(jiǎn)易用法

    這篇文章主要介紹了詳解Oracle游標(biāo)的簡(jiǎn)易用法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08

最新評(píng)論

凉山| 志丹县| 北票市| 白银市| 金沙县| 伊通| 阜宁县| 威海市| 廉江市| 文化| 教育| 松原市| 屯留县| 孝义市| 大石桥市| 伊金霍洛旗| 象州县| 西吉县| 富川| 正蓝旗| 望江县| 房山区| 金华市| 顺义区| 凤翔县| 游戏| 旺苍县| 永城市| 信宜市| 乌拉特中旗| 卓尼县| 容城县| 安阳县| 高密市| 嘉兴市| 怀来县| 鄯善县| 芷江| 泉州市| 定西市| 鄂尔多斯市|