SqlServer2000下实现行列转换

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 @sql=@sql+',max(case 课程 when '''+课程+''' then 分数 else 0 end )  '+课程+''   --这句话不太理解 
from (select distinct 课程 from tb) as a 

set @sql=@sql+' from tb group by 姓名'
exec(@sql)
 
 
 
阅读(459)| 评论(0
posted @ 2014-09-12 11:06  疯狂的多多  阅读(360)  评论(0编辑  收藏  举报