使用 case when進行行列轉換

2021-07-10 08:41:56 字數 729 閱讀 5228

固定列數的行列轉換,表結構為:

轉換後:

要求:建立表,源表,表名:student , 只用一句sql 得到轉換結果。

解答:方法一 :通過生成臨時表的方式操作

select name ,sum(yw) as '語文',sum(sx)  as '數學',sum(wy) as '英語'

from( 

select name , 

case subject when '語文' then score end as yw, 

case subject when '數學' then score end as sx, 

case subject when '英語' then score end as wy 

from  student

) tempstudent

group by name

方法二:課程只有語文、數學、物理這三門課程則可以使用靜態sql 來實現

select name as 姓名, 

max(case subject when '語文' then score else 0 end) 語文, 

max(case subject when '數學' then score else 0 end) 數學, 

max(case subject when '英語' then score else 0 end) 英語

from student

group by name

SQL進行行列轉換

假設現在有這樣一張表 create table dbo relconlist listid allint identity 1,1 not null listfkmainid varchar 20 collate chinese prc ci as not null listfkrelid varc...

sql進行行列轉換

1.分別求出孫悟空 豬八戒 沙僧的總打怪數 select sum kills from user1 a join user kills b on a.id b.user id where a.user name 孫悟空 select sum kills from user1 a join user ...

MySQL之進行行列轉換

內容介紹 如何進行行列轉換 如何生成唯一序列號 如何刪除重複資料 一 如何進行行列轉換 需要用到的場景 主要兩個場景 報表統計 彙總顯示 使用自連線實現行列轉換 行轉列比如成績 1 分別查詢出不同同學的成績,並將欄位名改為同學的名字。2 通過交叉連線,將不同的語句連線起來 select from s...