您的位置:首页 > 博客中心 > 数据库 >

SqlServer2000下实现行列转换

时间:2022-03-13 23:41

SqlServer2000下实现行列转换  

2011-04-06 22:07:07|  分类:  |  标签:        |举报|字号 

    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 endas 语文,
          max( case 课程 when ‘数学‘  then  分数  else 0 end) as 数学,
          max( case 课程 when ‘物理‘  then  分数  else 0 endas 物理
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

热门排行

今日推荐

热门手游