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

Oracle使用pivot和unpivot函數(shù)實現(xiàn)行列轉(zhuǎn)換

 更新時間:2023年06月15日 09:20:13   作者:牛奶咖啡13  
項目開發(fā)過程中常常會涉及到oracle數(shù)據(jù)庫的一個數(shù)據(jù)操作,那就是行列的互轉(zhuǎn),本文為大家介紹了兩個可以實現(xiàn)這一操作的函數(shù)pivot和unpivot,感興趣的可以了解一下

一、需求說明 

項目開發(fā)過程中涉及到oracle數(shù)據(jù)庫的數(shù)據(jù)操作;但是需要將數(shù)據(jù)進行列的互轉(zhuǎn),通過查閱資料可知在oracle中有三種方式可以實現(xiàn)行列互轉(zhuǎn):

①使用decode 函數(shù);

②使用case when 函數(shù);

③使用pivot函數(shù);

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

二、實現(xiàn)方法

我這里有一個數(shù)據(jù)表內(nèi)容如下:

2.1、實現(xiàn)將上圖內(nèi)容轉(zhuǎn)為行——decode函數(shù)

select
  "name",
  max(decode("course", '語文', "score")) 語文,
  max(decode("course", '數(shù)學', "score")) 數(shù)學,
  max(decode("course", '英語', "score")) 英語,
  sum("score") 總分
from "grade"
group by "name";

2.2、實現(xiàn)將上圖內(nèi)容轉(zhuǎn)為行——case when函數(shù)

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) 英語,
  sum("score") 總分
from "grade"
  group by "name";

2.3、實現(xiàn)將上圖內(nèi)容轉(zhuǎn)為行——pivot函數(shù)

pivot函數(shù)的語法:

pivot(聚合函數(shù) for 列名 in(類型))
 
select t.* from(
(select * from 原表名稱) 
pivot(
    max(需轉(zhuǎn)的列名稱) 
    for 需轉(zhuǎn)的列名稱 in(需轉(zhuǎn)列對應的值1,需轉(zhuǎn)列對應的值2,需轉(zhuǎn)列對應的值3
     )
)t

SELECT t.*,(t.語文+t.數(shù)學+t.英語)總分 from ((SELECT "name","course","score" from "grade")pivot
(
	 max("score") 
	 for "course" in('語文' 語文,'數(shù)學' 數(shù)學,'英語' 英語)
))t ORDER BY "name";

2.4、實現(xiàn)將上圖內(nèi)容轉(zhuǎn)為列——unpivot函數(shù)

需要轉(zhuǎn)的內(nèi)容如下圖:

unpivot函數(shù)的語法:

SELECT 列名稱,需定義的列1名稱,需定義的列2名稱 from 表名稱 unpivot (需定義的列2名稱 for 需定義的列1名稱 in(列2值1,列2值2,列2值3));

SELECT "name" 名字,course 課程,score 分數(shù) from "grade2" unpivot (score for course in("chinese","math","english"));

SELECT 名字,course 課程,score 分數(shù) from (
SELECT "name" 名字,"chinese" 語文,"math" 數(shù)學,"english" 英語 from "grade2") unpivot (score for course in(語文,數(shù)學,英語))

到此這篇關于Oracle使用pivot和unpivot函數(shù)實現(xiàn)行列轉(zhuǎn)換的文章就介紹到這了,更多相關Oracle行列轉(zhuǎn)換內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Oracle中大對象(LOB)處理方法

    Oracle中大對象(LOB)處理方法

    這篇文章介紹了Oracle中大對象(LOB)的處理方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • Oracle索引失效的情況及處理過程

    Oracle索引失效的情況及處理過程

    Oracle數(shù)據(jù)庫中索引失效可能的原因包括數(shù)據(jù)分布不均勻、數(shù)據(jù)類型轉(zhuǎn)換、函數(shù)操作、操作符不匹配、統(tǒng)計信息不準確、數(shù)據(jù)修改頻繁以及數(shù)據(jù)量很小等
    2026-01-01
  • ORACLE出現(xiàn)錯誤1033和錯誤ORA-00600的解決方法

    ORACLE出現(xiàn)錯誤1033和錯誤ORA-00600的解決方法

    這篇文章主要介紹了ORACLE出現(xiàn)錯誤1033和錯誤ORA-00600的解決方法,需要的朋友可以參考下
    2014-07-07
  • 六分鐘學會創(chuàng)建Oracle表空間的實現(xiàn)步驟

    六分鐘學會創(chuàng)建Oracle表空間的實現(xiàn)步驟

    這里介紹創(chuàng)建Oracle表空間的步驟,首先查詢空閑空間、增加Oracle表空間、修改文件大小語句如下、創(chuàng)建Oracle表空間,最后更改自動擴展屬性
    2013-06-06
  • 新Orcas語言特性-查詢句法

    新Orcas語言特性-查詢句法

    新Orcas語言特性-查詢句法...
    2007-04-04
  • 生產(chǎn)環(huán)境Oracle undo表空間管理實踐

    生產(chǎn)環(huán)境Oracle undo表空間管理實踐

    這篇文章主要介紹了生產(chǎn)環(huán)境Oracle undo表空間管理實踐,Oracle 數(shù)據(jù)庫有一種維護信息的方法,用于回滾或撤消對數(shù)據(jù)庫的更改,下面文章分享更多的相關資料需要的小伙伴可以參考一下
    2022-03-03
  • Oracle數(shù)據(jù)庫統(tǒng)計信息方法詳解

    Oracle數(shù)據(jù)庫統(tǒng)計信息方法詳解

    這篇文章主要介紹了如何查看和收集Oracle數(shù)據(jù)庫中的統(tǒng)計信息,包括表、索引和列的統(tǒng)計信息,介紹了DBMS_STATS包的功能和使用方法,以及如何通過分析和刪除統(tǒng)計信息來優(yōu)化數(shù)據(jù)庫性能,需要的朋友可以參考下
    2024-12-12
  • oracle安裝出現(xiàn)亂碼等相關問題

    oracle安裝出現(xiàn)亂碼等相關問題

    oracle安裝過程中出現(xiàn)亂碼等一系列相關問題,本文將介紹如何解決,需要了解的朋友可以參考下
    2012-11-11
  • oracle to_char函數(shù)將number轉(zhuǎn)成string

    oracle to_char函數(shù)將number轉(zhuǎn)成string

    很多數(shù)據(jù)轉(zhuǎn)換處理操作時,會遇到將0.007007040000轉(zhuǎn)換成0.70%的需求,我們使用Oracle 的SQL 函數(shù) to_char可以實現(xiàn)這種轉(zhuǎn)換,需要了解的朋友可以參考下
    2012-11-11
  • Oracle 語句優(yōu)化分析說明

    Oracle 語句優(yōu)化分析說明

    Oracle 語句優(yōu)化技巧,大家可以參考使用,使你的oracle運行效率更高更好。
    2009-09-09

最新評論

瑞昌市| 历史| 搜索| 仁化县| 南召县| 郎溪县| 梁平县| 普兰店市| 双城市| 平凉市| 亳州市| 京山县| 桂林市| 含山县| 行唐县| 常德市| 双江| 通化市| 乐昌市| 象州县| 岑巩县| 四川省| 涪陵区| 梨树县| 措勤县| 赤峰市| 永安市| 鄱阳县| 蕲春县| 洪湖市| 土默特右旗| 贵港市| 文登市| 肇源县| 平阳县| 九寨沟县| 眉山市| 永和县| 雅江县| 偏关县| 深泽县|