再请教一下:
create table T( 
  xh  char(12) , 
  cjx  char(2) ,              
  cj  char(5)   ) 
insert into T  values ('A','X','good') 
insert into T  values ('A','Y','bad') 
insert into T  values ('A','Z','ok') 
insert into T  values ('B','X','good') 
insert into T  values ('B','Y','ok') 
declare @sql varchar(8000)
set @sql='' 
select @sql=@sql+',max(case when cjx='''+cjx+''' then cj else '''' end) as '+cjx 
from T 
group by cjx 
select  @sql='select xh'+@sql+'  from T group by xh' 
exec(@sql)
这样转成的结果怎样保存为新表tb?

解决方案 »

  1.   

    create table tb(collist...)
    insert tb exec(@sql)
      

  2.   

    INSERT #T exec(@sql)好像那个OPENROWSET能行,没写过
      

  3.   

    create table T(
      xh  char(12) ,
      cjx  char(2) ,             
      cj  char(5)  )
    insert into T  values ('A','X','good')
    insert into T  values ('A','Y','bad')
    insert into T  values ('A','Z','ok')
    insert into T  values ('B','X','good')
    insert into T  values ('B','Y','ok')
    declare @sql varchar(8000)
    set @sql=''
    select @sql=@sql+',max(case when cjx='''+cjx+''' then cj else '''' end) as '+cjx
    from T
    group by cjx
    select  @sql='select xh'+@sql+'  from T group by xh'
    create table tb(collist...)
    insert tb exec(@sql)
    或者
    select  @sql='select xh'+@sql+' into Temp  from T group by xh'
    exec(@sql)
    select * from Temp
      

  4.   

    [code={0}]
    select ....
    into tb
    from ...
    [/code]