sqlserver用sql语句查询结果插入到新的数据库中

例如:有两个数据库A和B
A:字段:类别,内容;其对应值为:
101,a
101,b
101,c
102,d
102,e
查询相同类别的内空到B库对应的类别和内容字段中,插入B后的什为:
101,a,b,c
102, d,e
请高手指点如何实现?
你好,朋友。
谢谢你能及时给我答复,可我试了一下没试通。
还有没有更好的解决办法?求您了

第1个回答  2007-09-20
可以这样子写
先写一个自定义函数

create function cre_funcation(@a int)
returns varchar(2000)
as
begin
declare @str varchar(2000)
set @str=''

select @str=@str+','+rtrim(a.b) from test a
where a.a=@a

if len(@str)>0
begin
set @str=right(@str,len(@str)-1)
end
else
begin
set @str='无'
end

return @str
end

表A的字段分别为a和B,我写的测试表名为test,如果有必要你自己改一下
表B的字段也为A和B

这个自定义函数的功能是传入一个A表中的第一个字段的唯一值,得到表A中所有分组相同的一行值

再用一个游标,从A表中查询出不同的字段1
用这个函数即可手稿到表B中

再用游标插入

DECLARE @a int--申明一个变量,用来记录A表中的唯一A列

DECLARE cur CURSOR FOR
SELECT distinct a
FROM test
OPEN cur
FETCH NEXT FROM cur
INTO @a

WHILE @@FETCH_STATUS = 0
BEGIN
--往B表中插入组合后的东西,关键就是用到刚才写的那个函数
insert into b
select @a,dbo.cre_funcation(@a)

FETCH NEXT FROM cur
INTO @a
END

CLOSE cur
DEALLOCATE cur

如果你的B表结构也是A,B字段,则就可以了,请自建我的那两个测试表

插入B表还有一种方法
首先把A表中的唯一第一列手稿一个临时表
select distinct a into #tmp from test

--再这样
insert into b
select a,dbo.cre_funcation(a) from #tmp
这样就插入入
你再查一下B表就可以看到结果了
select * from b本回答被提问者采纳
第2个回答  2007-09-19
你的查询语句怎么写的啊?
相似回答