Y&歪

朝梦想前进!
sqlserver行列转换
1.

假设有张学生成绩表(stdent)如下
stdname stdSubject   result
   张三       语文           80
   张三       数学           90
   张三       物理           85
   李四       语文           85
   李四       数学           92
   李四       物理           82

想变成
姓名 语文 数学 物理
张三 80 90 85
李四 85 92 82

CREATE TABLE student (stdname nvarchar(10),stdsubject nvarchar(10),result int)
INSERT INTO student VALUES ('张三','语文',80)
INSERT INTO student values ('张三','数学',90)
INSERT INTO student VALUES ('张三','物理',85)
INSERT INTO student VALUES ('李四','语文',85)
INSERT INTO student values ('李四','数学',92)
INSERT INTO student VALUES ('李四','物理',82)


declare @b varchar(4000)
set @b='select stdname'
select @b=@b+',sum(case stdsubject when'''+stdsubject+''' then result end)['+stdsubject+']'
from(select distinct  stdsubject from student) as a
select @b=@b+ ' from student group by stdname'
exec(@b)

 

posted on 2009-12-28 17:07  xinyu1020  阅读(150)  评论(0编辑  收藏  举报