怎么样动态创建这样的表?(一个面试题不会做)
有这样的一个题目:有一个Name表是下面这样的: 
 Name                                          Year                                 Money 
    lan                                             1993                                 1 
 jim                                                1993                                 2 
 lan                                                1994                                 3 
 jim                                                1994                                 2   
 最后要显示成这样的表 
 Name                                 1993                                                      1994 
 lan                                          1                                                            3 
 jim                                          2                                                            2 
 第一行是字段名,要求用一句SQL语句写出来,30分,我知道需要动态创建表,但是不会写这条语句,现在贴出来,大家分析分析,看如何写。
------解决方案--------------------如果就是这些数据...   
 select name , sum (case when year =1993 then money else 0 end ) as [1993] 
        , sum (case when year =1994 then money else 0 end ) as [1994] 
 from name  
 group by name
------解决方案--------------------create table test (name char(10),year char(10),[Money] int) 
 go 
 insert test values( 'lan ', '1993 ',1) 
 insert test values( 'jim ', '1993 ',2) 
 insert test values( 'lan ', '1994 ',3) 
 insert test values( 'jim ', '1994 ',2)   
 declare @sql varchar(8000) 
 set @sql =  'select name ' 
 select @sql = @sql +  ',sum(case year when  ' ' '+rtrim(year)+ ' ' ' then [Money] end) [ '+rtrim(year)+ '] ' 
 from (select distinct year from test) as a 
 select @sql = @sql+ ' from test group by name ' 
 exec(@sql)   
 drop table test   
 --结果 
 /*  
 name	1993	1994 
 ----------------------------- 
 jim       	2	2 
 lan       	1	3 
 */
------解决方案--------------------动态吗?   
 create table #(A varchar(20),B varchar(20),C varchar(20)) 
 insert into # 
 select  'x ', '01 ', 'aaa ' union 
 select  'x ', '02 ', 'bbb ' union 
 select  'x ', '03 ', 'ccc ' union 
 select  'y ', '01 ', 'ddd ' union 
 select  'y ', '03 ', 'eee ' union 
 select  'z ', '04 ', 'fff ' 
 go   
 --处理语句 
 declare  
 @sql varchar(8000), 
 @sq  varchar(80