sql 的 簡單行列轉換
在sql 的運用中,經常用到簡單的行列轉換。以下是自己 調試的一個小例子。
create table mtest(
sname nvarchar(50),
subject nvarchar(50),
course int
)
sname nvarchar(50),
subject nvarchar(50),
course int
)
insert into mtest(sname,subject,course) values('張三','語文',80)
insert into mtest(sname,subject,course) values('張三','數學',81)
insert into mtest(sname,subject,course) values('張三','英語',82)
insert into mtest(sname,subject,course) values('李四','語文',90)
insert into mtest(sname,subject,course) values('李四','數學',91)
insert into mtest(sname,subject,course) values('李四','英語',92)
insert into mtest(sname,subject,course) values('張三','數學',81)
insert into mtest(sname,subject,course) values('張三','英語',82)
insert into mtest(sname,subject,course) values('李四','語文',90)
insert into mtest(sname,subject,course) values('李四','數學',91)
insert into mtest(sname,subject,course) values('李四','英語',92)
--select * from mtest
select sname as 姓名,sum(case subject when '語文' then course else 0 end) as '語文',
sum(case subject when '數學' then course else 0 end) as '數學',
sum(case subject when '英語' then course else 0 end) as '英語'
from mtest
group by sname
select sname as 姓名,sum(case subject when '語文' then course else 0 end) as '語文',
sum(case subject when '數學' then course else 0 end) as '數學',
sum(case subject when '英語' then course else 0 end) as '英語'
from mtest
group by sname