日期:2014-05-17  浏览次数:20512 次

动态查询后的结果,再存到其他表里,怎么做?
create table a
(
  名称 varchar(50),
  数车加工  varchar(50),
  加工中心  varchar(50),
  去毛  varchar(50),
  气试  varchar(50),

)

insert into a values('A','是','否','是','是')

declare @sql varchar(8000)
select @sql = isnull(@sql + ' union all ' , '' ) + ' select 名称 , [是否] = ' + quotename(Name , '''')  + ' from a'
 from syscolumns 
where  ID = object_id('a')
order by colid asc
exec(@sql + ' order by 名称 ')
--这个结果我想存到其他表里

------解决方案--------------------
象这种来自同一个表的数据,用得着动态sql语句吗,不用还简单,用了还麻烦
------解决方案--------------------
增加一个新表 new_a,然后把exec执行的结果直接插入到new_a表中:

create table a
(
  名称 varchar(50),
  数车加工  varchar(50),
  加工中心  varchar(50),
  去毛  varchar(50),
  气试  varchar(50),

)

insert into a values('A','是','否','是','是');


--新建一个存放动态结果的表:new_a
create table new_a
(
  名称 varchar(50),
  是否  varchar(50)
);


declare @sql varchar(8000)
select @sql = isnull(@sql + ' union all ' , '' ) + ' select 名称 , [是否] = ' + quotename(Name , '''')  + ' from a'
 from syscolumns 
where  ID = object_id('a')
order by colid asc

select @sql

--set @sql = 'select * into new_a from (' + @sql + ') a'


--把动态产生的结果,插入到new_a
insert into new_a
exec(@sql + ' order by 名称 ')


select * 
from new_a

------解决方案--------------------
3楼、4楼方法都可以啊
------解决方案--------------------
#3 樓的就可以咯
------解决方案--------------------
只要把你查询出来的数据在insert into 一张新表里即可