国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術文章
文章詳情頁

Oracle中pivot函數圖文實例詳解

瀏覽:142日期:2023-05-30 16:13:46
目錄
  • 【基本介紹】
  • 【準備樣例數據】
  • 【樣例展示1】
  • 【樣例展示2】
  • 【樣例展示3】
  • 【樣例展示4】
  • 【樣例展示5】
  • 【樣例展示6】
  • 總結

【基本介紹】

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

【說明】:實現將指定字段的字段值轉換為列的效果。

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

【準備樣例數據】

樣例數據如下圖所示:

NAME-學生姓名,SUBJECT-考試科目,GRADES-考試成績。

【樣例展示1】

實行如下sql語句:

select * from T_Student_Gradespivot(sum(grades)for name in("張三","李四","王五"))

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

【樣例展示2】

實行如下sql語句:

select * from T_Student_Gradespivot(avg(grades)for name in ("張三" as 張三,"李四" as 李四,"王五" as 王五))

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

【樣例展示3】

實行如下sql語句:

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

返回結果如下:統計每一個學生的所有科目總成績,并將學生姓名字段行轉列(SUBJECT字段沒有顯示)。

【樣例展示4】

實行如下sql語句:

select * from T_Student_Gradespivot(max(grades)for name in ("張三" as 張三,"李四" as 李四,"王五" as 王五))where subject="數學"

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

【樣例展示5】

實行如下sql語句:

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

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

【樣例展示6】

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

select * from T_Student_Gradespivot(count(grades)for name in (select distinct name from T_Student_Grades))

報錯提示:ORA-00936:確實表達式,如下圖所示,看來in不支持子查詢。

總結

到此這篇關于Oracle中pivot函數詳解的文章就介紹到這了,更多相關Oracle pivot函數詳解內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!

標簽: Oracle
主站蜘蛛池模板: 麻城市| 浦江县| 平乡县| 育儿| 佛坪县| 北宁市| 象州县| 阆中市| 永兴县| 方正县| 高尔夫| 军事| 锡林郭勒盟| 永城市| 余江县| 苗栗县| 汝南县| 金乡县| 丰镇市| 康乐县| 六安市| 剑河县| 沙田区| 灌云县| 宣恩县| 白城市| 济源市| 当涂县| 舞阳县| 临颍县| 玛多县| 观塘区| 石棉县| 大方县| 云梦县| 怀柔区| 泸定县| 云和县| 台中县| 荥阳市| 榆中县|