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

SQL 表列转表行(高精尖有关问题)

2012-04-06 
SQL 表列转表行(高精尖问题)源表:姓名语文数学-------------------------杨波9089李明7088赵强10060目标表

SQL 表列转表行(高精尖问题)
源表:
姓名       语文     数学
-------------------------
杨波       90               89
李明       70               88
赵强       100             60

目标表:
姓名     学科       得分
------------------------
杨波     语文       90  
杨波     数学       89
李明     语文       70
李明     数学       88
赵强     语文       100
赵强     数学       60

要求:
用sql语句实现,如何搞?谢谢   。。。

[解决办法]
Select
姓名,
'语文 ' As 学科,
语文 As 得分
From
TableName
Union
Select
姓名,
'数学 ' As 学科,
数学 As 得分
From
TableName
[解决办法]
UNION, 2005可以PIVOT
[解决办法]
2005实现方法
select *
from ta
unpivot
(数分 for [科目] in([语文],[数学])
)as tb
[解决办法]
declare @t table(姓名 varchar(10),语文 int,数学 int)
insert into @t select '杨波 ',90,89
union all select '李明 ',70,88
union all select '赵强 ',100,60

SELECT 姓名,科目,成绩
FROM
(SELECT 姓名,语文,数学
FROM @t) p
UNPIVOT
(成绩 FOR 科目 IN
(语文,数学)
)AS unpvt
/*

杨波语文90
杨波数学89
李明语文70
李明数学88
赵强语文100
赵强数学60
*/

热点排行