SqlServer2000下实现行列转换
2011-04-06 22:07:07| 分类: SQL Server | 标签:sqlserver 2000 行列转换 sql |举报|字号 订阅
create table tb(姓名 nvarchar(50),课程 nvarchar(50),分数 int)
insert into tb values(‘张三‘ , ‘语文‘ , 74)
insert into tb values(‘张三‘ , ‘数学‘ , 83)
insert into tb values(‘张三‘ , ‘物理‘ , 93)
insert into tb values(‘李四‘ , ‘语文‘ , 74)
insert into tb values(‘李四‘ , ‘数学‘ , 84)
insert into tb values(‘李四‘ , ‘物理‘ , 94)
1.静态实现
select 姓名,
max( case 课程 when ‘语文‘ then 分数 else 0 end) as 语文,
max( case 课程 when ‘数学‘ then 分数 else 0 end) as 数学,
max( case 课程 when ‘物理‘ then 分数 else 0 end) as 物理
from tb group by 姓名
2.动态实现
declare @sql nvarchar(500)
set @sql=‘select 姓名‘
select @[email protected]+‘,max(case 课程 when ‘‘‘+课程+‘‘‘ then 分数 else 0 end ) ‘+课程+‘‘ --这句话不太理解
from (select distinct 课程 from tb) as a
set @[email protected]+‘ from tb group by 姓名‘
exec(@sql)
转:http://de.cel.blog.163.com/blog/static/514512362011369514863/
阅读(459)| 评论(0