有這樣一張橫表a
name
course
score
小明英語
64小明
語文45
小明數學
43小紅
英語34
小紅語文
76小紅
數學56
需要轉換成如下b表:
name
語文數學
英語小明
4543
64小紅
7656
34這裡主要考察 case when的用法
select name,sum(case when course='語文' then score else 0 end),
sum(case when course='英語' then score else 0 end),
sum(case when course='數學' then score else 0 end)
from a
group by name
如果是b表轉換為a表
主要考察union all用法
select name,'語文' as course,語文 as score from b
union all
select name,'數學' as course,數學 as score from b
union all
select name,'英語' as course,英語 as score from b
橫表縱表轉換
橫表就是普通的建表方式,如表結構為 主鍵 欄位1 欄位2 欄位3.如果變成縱表後,則表結構為 主鍵 字段 字段值。而字段 則為字段1 欄位2 欄位3.具體為電信行業的例子。以使用者帳單表為例,一般出賬時使用者有很多費用,其資料一般儲存為 時間,客戶id,費用科目,費用。這種儲存結構一般稱為縱表,其特...
縱表轉橫表sql
縱表結構 fname ftype fvalue 小明 zaocan 10 小明 zhongcan 20 小明 wancan 5 轉換後的表結構 fname zaocan value zhongcan value wancan value 小明 10 20 5 縱表轉橫表sql如下 select fn...
sql實現縱表變橫表
網上所有的縱橫表轉換都是千篇一律的,參考價值都不大,而且只適合那種資料量固定的學生成績表的橫縱轉化,但是當真正遇到大資料量的批量轉換的時候是行不通的,下面介紹一種相對靈活的大量資料的橫縱表轉換 表結構 如上圖所示,其中index id中以0結尾的表示的是服務名,以1結尾的表示裝置rac名稱,2結尾的...