Oracle中pivot函數(shù)示例詳解
【基本介紹】
【格式】:pivot(聚合函數(shù) for 需要轉(zhuǎn)為列的字段名 in(需要轉(zhuǎn)為列的字段值))
【說明】:實現(xiàn)將指定字段的字段值轉(zhuǎn)換為列的效果。
【環(huán)境】:如下圖是樣例展示所使用的oracle版本。
【準備樣例數(shù)據(jù)】
樣例數(shù)據(jù)如下圖所示:
NAME-學生姓名,SUBJECT-考試科目,GRADES-考試成績。
【樣例展示1】
實行如下sql語句:
select * from T_Student_Grades pivot ( sum(grades) for name in('張三','李四','王五') )
返回結果如下:按指定科目統(tǒng)計所有學生的總成績,并將學生姓名字段行轉(zhuǎn)列顯示(此時雖然用到了聚合函數(shù)sum,由于SUBJECT字段也一并顯示,因此sum函數(shù)并沒有起到效果,顯示依舊是每一個學生的各科具體成績)。
【樣例展示2】
實行如下sql語句:
select * from T_Student_Grades pivot ( avg(grades) for name in ('張三' as 張三,'李四' as 李四,'王五' as 王五) )
返回結果如下:按指定科目統(tǒng)計所有學生的平均成績,并將學生姓名字段行轉(zhuǎn)列,顯示別名(此時雖然用到了聚合函數(shù)avg,由于SUBJECT字段也一并顯示,因此avg函數(shù)并沒有起到效果,顯示依舊是每一個學生的各科具體成績)。
【樣例展示3】
實行如下sql語句:
select * from (select name,grades from T_Student_Grades) pivot ( sum(grades) for name in ('張三','李四','王五') )
返回結果如下:統(tǒng)計每一個學生的所有科目總成績,并將學生姓名字段行轉(zhuǎn)列(SUBJECT字段沒有顯示)。
【樣例展示4】
實行如下sql語句:
select * from T_Student_Grades pivot ( max(grades) for name in ('張三' as 張三,'李四' as 李四,'王五' as 王五) ) where subject='數(shù)學'
返回結果如下:按指定科目統(tǒng)計所有學生的最高成績,并將學生姓名字段行轉(zhuǎn)列,并且只顯示數(shù)學這一科目的成績(此時雖然用到了聚合函數(shù)max,由于SUBJECT字段也一并顯示,因此max函數(shù)并沒有起到效果,依舊是顯示每一個學生的各科具體成績)。
【樣例展示5】
實行如下sql語句:
select * from T_Student_Grades pivot ( min(grades) for name in ('張三' as 張三,'李四' as 李四,'王五' as 王五) ) where 張三='90'
返回結果如下:按指定科目統(tǒng)計所有學生的最低成績,并將學生姓名字段行轉(zhuǎn)列,并且只顯示數(shù)學這一科目的成績(此時雖然用到了聚合函數(shù)max,由于SUBJECT字段也一并顯示,因此max函數(shù)并沒有起到效果,依舊是顯示每一個學生的各科具體成績)。
【樣例展示6】
實行如下sql語句(in中使用子查詢):
select * from T_Student_Grades pivot ( count(grades) for name in (select distinct name from T_Student_Grades) )
報錯提示:ORA-00936:確實表達式,如下圖所示,看來in不支持子查詢。
到此這篇關于Oracle中pivot函數(shù)詳解的文章就介紹到這了,更多相關Oracle pivot函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Oracle數(shù)據(jù)庫中字符串截取最全方法總結
Oracle提供了多種截取字符串的操作方法,可以根據(jù)具體需求選擇合適的方法進行操作,下面這篇文章主要給大家總結介紹了關于Oracle數(shù)據(jù)庫中字符串截取的最全方法,需要的朋友可以參考下2024-03-03利用PL/SQL從Oracle數(shù)據(jù)庫導出和導入數(shù)據(jù)
這篇文章主要為大家詳細介紹了利用PL/SQL從Oracle數(shù)據(jù)庫導出數(shù)據(jù)和導入數(shù)據(jù),具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-03-03如何解決Oracle數(shù)據(jù)表入庫中文亂碼問題
Oracle數(shù)據(jù)庫在處理中文數(shù)據(jù)時,經(jīng)常會遇到亂碼問題,導致數(shù)據(jù)無法正常顯示和處理,這是因為Oracle數(shù)據(jù)庫默認的字符集為US7ASCII,無法識別中文字符,通過修改數(shù)據(jù)庫,客戶端和應用程序字符集,將數(shù)據(jù)轉(zhuǎn)換為正確的字符集,可以避免亂碼問題2024-02-02