例如表cj
名字 科目 分數
A 語文 100
A 數學 90
A 外語 99
B 語文 90
B 數學 80
B 外語 100
方法 (一)
select * from cj
select 名字, max(case 科目 when "語文" then 分數 else 0 end ) 語文,
max(case 科目 when "數學" then 分數 else 0 end ) 數學,
max(case 科目 when "外語" then 分數 else 0 end ) 外語
from cj
group by 名字
方法 (二)
declare @sql varchar(800)
set @sql="select 名字"
select @sql =@sql+", max(case 科目 when """+科目+""" then 分數 else 0 end )["+科目+"]"
from (select distinct 科目 from cj ) as a
set @sql=@sql+"from cj group by 名字"
exec(@sql)
結果:
名字 語文 數學 外語
A 100 90 99
B 90 80 100
例如表cj
名字 科目 分數
A 語文 100
A 數學 90
A 外語 99
B 語文 90
B 數學 80
B 外語 100
方法 (一)
select * from cj
select 名字, max(case 科目 when "語文" then 分數 else 0 end ) 語文,
max(case 科目 when "數學" then 分數 else 0 end ) 數學,
max(case 科目 when "外語" then 分數 else 0 end ) 外語
from cj
group by 名字
方法 (二)
declare @sql varchar(800)
set @sql="select 名字"
select @sql =@sql+", max(case 科目 when """+科目+""" then 分數 else 0 end )["+科目+"]"
from (select distinct 科目 from cj ) as a
set @sql=@sql+"from cj group by 名字"
exec(@sql)
結果:
名字 語文 數學 外語
A 100 90 99
B 90 80 100