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 
 */