交叉表,其中一列的行数并不固定
表 
 fldTeamName   fldName   fldCount 
                a                           AA                  10 
                a                           BB                  0 
                a                           DD                  18     
 显示结果 
 fldTeamName      AA      BB      DD 
                a                     10      0         18   
 其中   fldName   中的数据不能确定为AA,BB,DD   有可能还会出现CC,EE 
------解决方案--------------------if object_id( 'tbTest ') is not null 
     drop table tbTest 
 GO 
 create table tbTest(fldTeamName varchar(10),fldName varchar(10),fldCount int) 
 insert tbTest 
 select       'a ',          'AA ',      10 union all 
 select       'a ',          'BB ',      0 union all 
 select       'a ',          'DD ',      18   
 declare @str varchar(8000) 
 set @str =  ' ' 
 select @str = @str +  ',[ ' + fldName +  ']=sum(case fldName when  ' ' ' + fldName +  ' ' ' then fldCount else 0 end) ' 
 from tbTest group by fldName 
 set @str =  'select fldTeamName  '+@str +  ' from tbTest group by fldTeamName ' 
 EXEC(@str)   
 drop table tbTest 
 /*结果 
 fldTeamName  AA  BB  DD 
 ------------------------------ 
      a       10  0   18 
 */
------解决方案--------------------这个论坛中例子很多   
 create table T(fldTeamName varchar(10), fldName varchar(50), fldCount int) 
 insert T select  'a ', 'AA ',10 
 union all select  'a ', 'EE ',20 
 union all select  'a ', 'BB ', 0 
 union all select  'a ', 'DD ', 18     
 declare @sql varchar(8000) 
 set @sql= 'select fldTeamName, ' 
 select @sql=@sql+quotename(fldName)+ '=sum(case when fldName= ' ' '+fldName+ ' ' ' then [fldCount] end), ' from T 
 group by fldName 
 select @sql=left(@sql, len(@sql)-1), @sql=@sql+ ' from T group by fldTeamName  ' 
 exec(@sql)   
 drop table t   
 -- 
 (所影响的行数为 4 行)   
 fldTeamName AA          BB          DD          EE           
 ----------- ----------- ----------- ----------- -----------  
 a           10          0           18          20
------解决方案--------------------CREATE TABLE tb(fldTeamName varchar(10), fldName varchar(10), fldCount int) 
 INSERT tb SELECT  'a '        ,  'AA '    ,  10 
  UNION ALL SELECT      'a '        ,  'BB '   ,   0 
  UNION ALL SELECT      'a '        ,  'DD '   ,   18     
 DECLARE @s nvarchar(4000) 
 SET @s= 'SELECT fldTeamName '   
 SELECT @s=@s 
 		+ ', '+QUOTENAME(fldName) 
 		+N '=SUM(CASE fldName WHEN  '+QUOTENAME(fldName,N ' ' ' ') 
 		+N ' THEN fldCount END) ' 
 FROM tb 
 GROUP BY fldName     
 EXEC(@s+N ' 
 FROM tb 
 GROUP BY fldTeamName ')   
 drop table tb
------解决方案--------------------declare @str varchar(8000) 
 set @str =  'select fldTeamName   '