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

复杂的SQL插入语句,该怎样实现?
我需要实现的就是把一个表里的值插入另一个表,但是与一般的插入不同!
表1的结构如下:
a       字段名称
a1     值
a2     值
a3     值
表2的结构如下:
item1     item2     item3   ...   item50       字段名称   一共有50个字段名称
我想实现插入后的结果是这样的
item1     item2     item3   ...   item50       字段名称
a1           a2           a3                                   值
也就是说,把a1,a2,a3插入到一列中,其中a1,a2,a3可能相同,也可能不同!
在表2   中之所以有50个字段名称,因为有时候得到的a字段的值不一样多,但最终不会超过50个!

这样的一条SQL语句该如何写?

------解决方案--------------------
insert into 表1
select item1 , 字段名称 from 表2 union all
select item2 , 字段名称 from 表2 union all
........
select item50 , 字段名称 from 表2

------解决方案--------------------
'a1直 ', 'a2直 ', 'a3直 ', 'a4直 ', 'a5直 '
再对这串处理,然后 ' '中间的数目够50X
TMD想的好复杂...

对了 csdn帮助不能用N天了.怎么搞的TMD
------解决方案--------------------
create table aaag (a varchar(10))
insert aaag select 'aa '
insert aaag select 'bb '
insert aaag select 'cc '

create table bbbg(item1 varchar(10),item2 varchar(10),item3 varchar(10),item4 varchar(10),item5 varchar(10))

declare @s varchar(1000)
declare @r varchar(1000)
declare @i int,@Cou int
set @i=1
set @s= ' '
set @r= ' '
select @r=@r+char(39)+a+ ' ' ', ' from aaag
select @r= '( '+left(@r,len(@r)-1)+ ') '
select @Cou=count(1) from aaag
while @i <@cou+1
begin
set @s=@s+ 'item '+ltrim(@i)+ ', '
set @i=@i+1
end
select @s= 'insert bbbg ( '+left(@s,len(@s)-1)+ ')values '+@r
exec(@s)
select * from bbbg