代码如下  
declare @sql varchar(8000)
set @sql = 'select CompanyID '
select @sql = @sql + ' , max(case EquipName when ''' + EquipName + ''' then number else 0 end) [' + EquipName + ']'
from (select distinct EquipName from (select CompanyID,count(EquipName) number,EquipName from WL_EquipmentView 
 group by EquipName,CompanyID) b) as a
set @sql = @sql + ', sum(number) total from (select CompanyID,count(EquipName) number,EquipName from WL_EquipmentView where state=1 and BtypeCode=2 
group by EquipName,CompanyID) c group by CompanyID '
set @sql = 'select * from ('+@sql+') aa full join 
(select CompanyID,
   max(case EquipName when ''计算机'' then number else 0 end) 计算机,
   max(case EquipName when ''集中存储'' then number else 0 end) 集中存储,
   max(case EquipName when ''服务器'' then number else 0 end) 服务器,
  sum(number) totalCom
   from (select CompanyID,count(EquipName) 
number,EquipName from ComputerInfoView 
group by EquipName,CompanyID) c group by CompanyID ) bb on aa.CompanyID=bb.CompanyID'
print (@sql)
exec(@sql)用存储过程行不行

解决方案 »

  1.   

    当然可以用存储过程,就是Create Procedure Sp1
    As
    Begin
       <嵌入你的语法>
    End
      

  2.   

    如果知道这个动态查询有哪几个列,可以先定义表结构,然后:
    insert into 表 exec(@sql)
      

  3.   

    创建一个临时表
    insert into #tb exec(@sql)
      

  4.   

    要Insert到新表中,就得建一个表或者临时表
    然后最后依据改为exec('Insert Into #T'+@sql)
      

  5.   


    关键是不知道新表的表结构啊  用select * into from  行不行啊
    但是又报错
      

  6.   

    根据你的思想 我解决了  
    方法是exec('select * Into from T('+@sql+') as cc')
    谢了