Oracle查詢中行顯轉列顯的方法

有時候數據庫存儲的是一行行的數據,而顯示的時候咱們須要把他轉化爲一列數據,sql

比較常見的場景是,學生的考試成績,員工的工資明細數據庫

這些都會存在一個表中,有不少行數據,可是最終展現的時候咱們須要合併爲一行數據ci

下面以學生成績爲例數學

Name    Subject    Result
張三    語文    74
張三    數學    83
張三    物理    93
李四    語文    74
李四    數學    84
李四    物理    94table

試題一 : 經過查詢指令輸出如下數據
姓名    語文    數學    物理    平均分    總分
李四    74    84    94    84.00    252
張三    74    83    93    83.33    250ast

-----------------------------------------------------------------------------------------------------------------test

建立表:select

create table test(
       username varchar(12),
       kemu varchar(12),
       fenshu number(4)
);sql語句

向表中製造數據:im

select a.*,rowid from test a ;
 

查詢的sql語句以下:

使用case when 語句對每門課進行分類,用人員來分組獲得這我的的全部門科,同時能夠求出總分和平均分

select username,

 max(case kemu when '語文' then fenshu else 0 end) 語文,

 max(case kemu when '數學' then fenshu else 0 end) 數學,

 max(case kemu when '英語' then fenshu else 0 end) 英語,
 sum(fenshu) 總分,

 cast(avg(fenshu*1.0) as decimal(18,2))平均分

from test

group by username  ;

相關文章
相關標籤/搜索