oracle SQL豎表轉橫表

2021-08-27 15:28:30 字數 879 閱讀 8083

oracle sql 實現豎表轉橫表

t_t_student表查詢記錄如下,要轉成橫表

姓名 課程 成績

1 張飛 語文 80

2 張飛 數學 87

3 關羽 語文 97

4 張飛 英語 68

5 關羽 數學 53

6 劉備 語文 90

方法一:

--用decode實現,

select t.name,

sum(decode(t.course, '語文', t.score)) 語文,

sum(decode(t.course, '數學', t.score)) 數學,

sum(decode(t.course, '英語', t.score)) 英語

from t_t_student t

group by t.name

方法二:

--用case when 實現

select t.name,

sum(case t.course when '語文' then t.score else 0 end) 語文,

sum(case t.course when '數學' then t.score else 0 end) 數學,

sum(case t.course when '英語' then t.score else 0 end) 英語

from t_t_student t

group by t.name

輸出結果如下:

姓名 語文 數學 英語

1 劉備 90 94 92

2 關羽 97 53 95

3 張飛 80 87 68

區別如果條件是單一值時,用decode比較簡便,如果判斷條件比較複雜是用case when實現

oracle SQL豎表轉橫表

oracle sql豎表轉橫表 t t student表查詢記錄如下,要轉成橫表 姓名 課程 成績 1 張飛 語文 80 2 張飛 數學 87 3 關羽 語文 97 4 張飛 英語 68 5 關羽 數學 53 6 劉備 語文 90 方法一 用decode實現,select t.name,sum de...

SQL豎表轉橫表 橫表轉豎表

豎表轉橫表 豎表結構 name course grade 張三語文 75張三 數學80 張三英語 90李四 語文95 李四數學 55轉換後橫表結構 name 語文數學 英語張三 7580 90李四 9555 0sql語句 1 select name,2sum case course when 語文 ...

豎表轉橫表

今天遇到乙個要求將豎表轉換成橫表。以前看過豎表轉橫表但沒寫過,現記錄下來以供學習。任務大體要求如下 教師號 星期號 是否有課 有 有 有 有 有 寫一條sql語句讓你變為這樣的表 教師號 星期一 星期二 星期三 建表 create table teac info teac no number,day...