Oracle中pivot函數(shù)圖文實(shí)例詳解

oracle中pivot函數(shù)圖文實(shí)例詳解

 

【基本介紹】

【格式】:pivot(聚合函數(shù) for 需要轉(zhuǎn)為列的字段名 in(需要轉(zhuǎn)為列的字段值))

【說明】:實(shí)現(xiàn)將指定字段的字段值轉(zhuǎn)換為列的效果。

【環(huán)境】:如下圖是樣例展示所使用的oracle版本。

 

【準(zhǔn)備樣例數(shù)據(jù)】

樣例數(shù)據(jù)如下圖所示:

name-學(xué)生姓名,subject-考試科目,grades-考試成績。

 

【樣例展示1】

實(shí)行如下sql語句:

select * from t_student_grades
pivot
(
sum(grades)
for name in('張三','李四','王五')
)

返回結(jié)果如下:按指定科目統(tǒng)計所有學(xué)生的總成績,并將學(xué)生姓名字段行轉(zhuǎn)列顯示(此時雖然用到了聚合函數(shù)sum,由于subject字段也一并顯示,因此sum函數(shù)并沒有起到效果,顯示依舊是每一個學(xué)生的各科具體成績)。

 

【樣例展示2】

實(shí)行如下sql語句:

select * from t_student_grades
pivot
(
avg(grades)
for name in ('張三' as 張三,'李四' as 李四,'王五' as 王五)
)

返回結(jié)果如下:按指定科目統(tǒng)計所有學(xué)生的平均成績,并將學(xué)生姓名字段行轉(zhuǎn)列,顯示別名(此時雖然用到了聚合函數(shù)avg,由于subject字段也一并顯示,因此avg函數(shù)并沒有起到效果,顯示依舊是每一個學(xué)生的各科具體成績)。

 

【樣例展示3】

實(shí)行如下sql語句:

select * from (select name,grades from t_student_grades)
pivot
(
sum(grades)
for name in ('張三','李四','王五')
)

返回結(jié)果如下:統(tǒng)計每一個學(xué)生的所有科目總成績,并將學(xué)生姓名字段行轉(zhuǎn)列(subject字段沒有顯示)。

 

【樣例展示4】

實(shí)行如下sql語句:

select * from t_student_grades
pivot
(
max(grades)
for name in ('張三' as 張三,'李四' as 李四,'王五' as 王五)
)
where subject='數(shù)學(xué)'

返回結(jié)果如下:按指定科目統(tǒng)計所有學(xué)生的最高成績,并將學(xué)生姓名字段行轉(zhuǎn)列,并且只顯示數(shù)學(xué)這一科目的成績(此時雖然用到了聚合函數(shù)max,由于subject字段也一并顯示,因此max函數(shù)并沒有起到效果,依舊是顯示每一個學(xué)生的各科具體成績)。

 

【樣例展示5】

實(shí)行如下sql語句:

?select * from t_student_grades
pivot
(
min(grades)
for name in ('張三' as 張三,'李四' as 李四,'王五' as 王五)
)
where 張三='90'

返回結(jié)果如下:按指定科目統(tǒng)計所有學(xué)生的最低成績,并將學(xué)生姓名字段行轉(zhuǎn)列,并且只顯示數(shù)學(xué)這一科目的成績(此時雖然用到了聚合函數(shù)max,由于subject字段也一并顯示,因此max函數(shù)并沒有起到效果,依舊是顯示每一個學(xué)生的各科具體成績)。

 

【樣例展示6】

實(shí)行如下sql語句(in中使用子查詢):

select * from t_student_grades
pivot
(
count(grades)
for name in (select distinct name from t_student_grades)
)

報錯提示:ora-00936:確實(shí)表達(dá)式,如下圖所示,看來in不支持子查詢。

 

總結(jié)

關(guān)于oracle中pivot函數(shù)詳解的文章就介紹至此,更多相關(guān)oracle pivot函數(shù)詳解內(nèi)容請搜索碩編程以前的文章,希望以后支持碩編程!

下一節(jié):oracle行級觸發(fā)器的使用操作

oracle數(shù)據(jù)庫

相關(guān)文章
學(xué)習(xí)MySQL
亚洲国产精品第一区二区,久久免费视频77,99V久久综合狠狠综合久久,国产免费久久九九免费视频