行转列,请问如何实现,在线等结帖!!!
姓名 语文 数学 物理
张三 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
*/