oracle SQL豎表轉橫表

2021-07-11 12:58:08 字數 1032 閱讀 2622

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...

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...