日期:2014-05-18  浏览次数:20633 次

求一超级难SQL语句
需求:有2个表,2个表由关键字可以关联。
            根据表一中有几条记录,在表二中相应地增加多少列,表二的其他列不变。
            注:表一中没有1、2、3、...的序列号

***************************************************************************


create   table   t   (列0   int,列1   int,列2   varchar(10),列3   varchar(10))
insert   into   t   values(101,1,         'A ',           'X ')
insert   into   t   values(101,2,         'B ',           'Y ')
insert   into   t   values(101,3,         'C ',           'Z ')
go
declare   @sql   varchar(8000)
set   @sql   =   'select   列0 '
select   @sql   =   @sql   +   '   ,max(case   列1   when   ' ' '   +   cast(列1   as   varchar)   +   ' ' '   then   列2   end)   [列2_ '   +   cast(列1   as   varchar)   +   '] '
                                      +   '   ,max(case   列1   when   ' ' '   +   cast(列1   as   varchar)   +   ' ' '   then   列3   end)   [列3_ '   +   cast(列1   as   varchar)   +   '] '
from   (select   distinct   列1   from   t   )   as   a
set   @sql   =   @sql   +   '   from   t   group   by   列0 '
exec(@sql)  
drop   table   t

/*
列0                   列2_1             列3_1             列2_2             列3_2             列2_3               列3_3              
-----------   ----------   ----------   ----------   ----------   ----------   ----------  
101                   A                     X                     B                     Y                     C                     Z

*/

***************************************************************************

难为情啊,没有研究透!
原需求:存在2个表,其中
表一:
列1     列2       列3
101     A           X
101     B           Y
101     C           Z
102     D           O
103     E           P
...     ..         ..

表二:
列1     列2       列3
101     甲         ..        
102     乙