首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

行转列,请教怎么实现,结帖!

2012-02-17 
行转列,请问如何实现,在线等结帖!!!姓名语文数学物理张三73  83  93李四74  84  94。。。。。。行数不固定------

行转列,请问如何实现,在线等结帖!!!
姓名   语文   数学   物理
张三   73  83  93
李四   74  84  94
。。。。。。
行数不固定
--------------------------
转换成下列形式
科目   张三   李四     。。。
语文   73       74
数学   83       84
物理   93       94
或者去掉第一列也行

[解决办法]
建议搜索一下“行专列”
[解决办法]
Create Table TEST
(姓名Nvarchar(10),
语文Int,
数学Int,
物理Int)
Insert TEST Select N '张三 ', 73,83,93
Union All Select N '李四 ', 74,84,94
GO
Declare @S1 Nvarchar(4000), @S2 Nvarchar(4000), @S3 Nvarchar(4000)
Select @S1=N 'Select N ' '语文 ' ' As 科目 ', @S2 = N ' Union All Select N ' '数学 ' ' As 科目 ', @S3 = N ' Union All Select N ' '物理 ' ' As 科目 '
Select @S1 = @S1 + N ', SUM(Case 姓名 When N ' ' '+ 姓名 + N ' ' ' Then 语文 Else 0 End) As ' + 姓名,
@S2 = @S2 + N ', SUM(Case 姓名 When N ' ' '+ 姓名 + N ' ' ' Then 数学 Else 0 End) As ' + 姓名,
@S3 = @S3 + N ', SUM(Case 姓名 When N ' ' '+ 姓名 + N ' ' ' Then 物理 Else 0 End) As ' + 姓名
From TEST
Select @S1 = @S1 + ' From TEST ', @S2 = @S2 + ' From TEST ', @S3 = @S3 + ' From TEST '
--Select @S1 + @S2 + @S3
EXEC(@S1 + @S2 + @S3)
GO
Drop Table TEST
--Result
/*
科目张三李四
语文7374
数学8384
物理9394
*/

热点排行