declare @sql varchar(8000)
set @sql = 'select o.blh,o.brxm,0 as 利润'
select @sql = @sql + ' , max(case ksmc when ''' + ksmc + ''' then fyhj else 0 end) [' + ksmc + ']'
 from (select distinct ksmc from (select a.BLH,c.BRXM,b.ksmc, (a.gfje+a.zfje) as fyhj from (select BLH ,ZYCS,sfks,SUM(zfje) as zfje,SUM(gfje) as gfje from zy_dxsf
group by BLH ,ZYCS,sfks) a join ZD_KSFL b on a.sfks=b.ksbh
join ZY_BRZL c on a.BLH=c.blh) o ) as a
set @sql = @sql + ' from (select a.BLH,c.BRXM,b.ksmc, (a.gfje+a.zfje) as fyhj from (select BLH ,ZYCS,sfks,SUM(zfje) as zfje,SUM(gfje) as gfje from zy_dxsf
group by BLH ,ZYCS,sfks) a join ZD_KSFL b on a.sfks=b.ksbh
join ZY_BRZL c on a.BLH=c.blh) o  group by o.blh,o.brxm order by o.blh'
exec(@sql) 
如何写入##ls这张表中?谢谢

解决方案 »

  1.   


    insert ##t exec(@sql)???
      

  2.   


    declare @sql varchar(8000) 
    set @sql = 'select o.blh,o.brxm,0 as 利润' 
    select @sql = @sql + ' , max(case ksmc when ''' + ksmc + ''' then fyhj else 0 end) [' + ksmc + ']' into ##ls
    from (select distinct ksmc from (select a.BLH,c.BRXM,b.ksmc, (a.gfje+a.zfje) as fyhj from (select BLH ,ZYCS,sfks,SUM(zfje) as zfje,SUM(gfje) as gfje from zy_dxsf 
    group by BLH ,ZYCS,sfks) a join ZD_KSFL b on a.sfks=b.ksbh 
    join ZY_BRZL c on a.BLH=c.blh) o ) as a 
    set @sql = @sql + ' from (select a.BLH,c.BRXM,b.ksmc, (a.gfje+a.zfje) as fyhj from (select BLH ,ZYCS,sfks,SUM(zfje) as zfje,SUM(gfje) as gfje from zy_dxsf 
    group by BLH ,ZYCS,sfks) a join ZD_KSFL b on a.sfks=b.ksbh 
    join ZY_BRZL c on a.BLH=c.blh) o  group by o.blh,o.brxm order by o.blh' 
    exec(@sql)
      

  3.   


    先创建表##ls
    如 :create table ##ls(a int,xxxxxx)
    然后在执行exec(@sql)之前,
    insert into ##ls

    exec(@sql)
      

  4.   

    先创建临时表不行,因为我不能确定执行exec(@sql)后,会有多少列,列数是动态的。
      

  5.   

    用你的方法报错,我一开始也是这样写的,但不行
    消息 194,级别 15,状态 1,第 3 行
    SELECT INTO 语句不能包含向变量赋值的 SELECT 语句。
    消息 156,级别 15,状态 1,第 7 行
    关键字 'as' 附近有语法错误。