这条sql是怎么工作的?
CREATE   TABLE   [Test]   ( 
 	[id]   [int]   IDENTITY   (1,   1)   NOT   NULL   , 
 	[name]   [nvarchar]   (50)   COLLATE   Chinese_PRC_CI_AS   NOT   NULL   , 
 	[subject]   [nvarchar]   (50)   COLLATE   Chinese_PRC_CI_AS   NULL   , 
 	[score]   [numeric](18,   0)   NULL   , 
 	CONSTRAINT   [PK_ID]   PRIMARY   KEY      CLUSTERED    
 	( 
 		[id] 
 	)      ON   [PRIMARY]    
 )   ON   [PRIMARY] 
 GO   
 insert   into   test([name],[subject],[score])   values( '张三 ', '语文 ',60) 
 insert   into   test([name],[subject],[score])   values( '张三 ', '数学 ',76) 
 insert   into   test([name],[subject],[score])   values( '张三 ', '英语 ',80)   
 insert   into   test([name],[subject],[score])   values( '李四 ', '语文 ',90) 
 insert   into   test([name],[subject],[score])   values( '李四 ', '数学 ',88) 
 insert   into   test([name],[subject],[score])   values( '李四 ', '英语 ',50)     
 declare   @sql   nvarchar(4000) 
 select   @sql= 'select   name, ' 
 select   @sql=@sql+ 'sum(case   subject   when    ' ' '+subject+ ' ' ' 
 then   score   else   0   end)   as    ' ' '+subject+ ' ' ', ' 
 from   (select   distinct   subject   from   test)   as   a   
 print   @sql   
 为什么这条语句..能够输出 
 select   name,sum(case   subject   when    '数学 ' 
 then   score   else   0   end)   as    '数学 ',sum(case   subject   when    '英语 ' 
 then   score   else   0   end)   as    '英语 ',sum(case   subject   when    '语文 ' 
 then   score   else   0   end)   as    '语文 ',   
 这样?它是怎么工作的?
------解决方案--------------------select @sql=@sql+ 'sum(case subject when  ' ' '+subject+ ' ' ' 
                                            ~~~~~~看这里   
 用表a里的subject字段里的值替换我划线的部分 
 对每个字段都作一次,不是就有3句了吗? 
 这下明白了吗?