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

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

Oracle中pivot函數圖文實例詳解

瀏覽:190日期: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
主站蜘蛛池模板: 利辛县| 荆门市| 庆阳市| 营口市| 九龙城区| 泊头市| 汤阴县| 高密市| 金门县| 蛟河市| 呼伦贝尔市| 沂南县| 和田市| 沐川县| 六盘水市| 重庆市| 砚山县| 和龙市| 葫芦岛市| 平原县| 芦溪县| 苗栗县| 闽清县| 竹山县| 巨野县| 三穗县| 炉霍县| 泸定县| 达孜县| 张北县| 封开县| 四子王旗| 天柱县| 县级市| 咸阳市| 六盘水市| 临泉县| 策勒县| 文登市| 吴堡县| 丰宁|