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