Princesa, Segue um exemplo completo, do nosso amigo eriva_br , de executar o que queres. set nocount on
--tabelas para testes
create table produto (ID_PRODUTO int, NOM_PRODUTO varchar(50))
insert into produto (ID_PRODUTO, NOM_PRODUTO ) values (1, 'PRODUTO 1')
insert into produto (ID_PRODUTO, NOM_PRODUTO ) values (2, 'PRODUTO 2')
insert into produto (ID_PRODUTO, NOM_PRODUTO ) values (3, 'PRODUTO 3')
create table fornecedor(ID_FORNECEDOR int, NOM_FORNECEDOR varchar(50))
insert into fornecedor (ID_FORNECEDOR, NOM_FORNECEDOR ) values (1, 'FORNECEDOR 1')
insert into fornecedor (ID_FORNECEDOR, NOM_FORNECEDOR ) values (2, 'FORNECEDOR 2')
insert into fornecedor (ID_FORNECEDOR, NOM_FORNECEDOR ) values (3, 'FORNECEDOR 3')
insert into fornecedor (ID_FORNECEDOR, NOM_FORNECEDOR ) values (4, 'FORNECEDOR 4')
create table forn_prod (ID_PRODUTO int, ID_FORNECEDOR int)
insert into forn_prod (ID_PRODUTO, ID_FORNECEDOR ) values (1, 1)
insert into forn_prod (ID_PRODUTO, ID_FORNECEDOR ) values (2, 1)
insert into forn_prod (ID_PRODUTO, ID_FORNECEDOR ) values (1, 2)
insert into forn_prod (ID_PRODUTO, ID_FORNECEDOR ) values (2, 2)
insert into forn_prod (ID_PRODUTO, ID_FORNECEDOR ) values (1, 4)
--tabela temporaria
create table #temp (NOM_PRODUTO varchar(50), NOM_FORNECEDOR varchar(4000))
--select distinct para buscar somente produtos que estejam na tabela forn_prod
--cursor x: produtos
declare x cursor for select distinct forn_prod.ID_PRODUTO, NOM_PRODUTO from forn_prod
inner join produto on produto.ID_PRODUTO = forn_prod.ID_PRODUTO
--variaveis para o cursor x
declare @ID_PRODUTO int
declare @NOM_PRODUTO varchar(50)
--variável para concatenar o nome dos fornecedores
declare @NOM_FORNECEDOR_conc varchar(8000)
open x
f etch next from x into @ID_PRODUTO,@NOM_PRODUTO
while @@fetch_Status=0
begin
--zerando variável de concatenação
set @NOM_FORNECEDOR_conc = ''
--cursor y: fornecedores relacionados com os produtos, vai concatenar os fornecedores na variável @NOM_FORNECEDOR_conc
declare y cursor for select NOM_FORNECEDOR from fornecedor
inner join forn_prod on forn_prod.ID_FORNECEDOR = fornecedor.ID_FORNECEDOR
where forn_prod.ID_PRODUTO = @ID_PRODUTO
--variavel para o cursor y
declare @NOM_FORNECEDOR varchar(50)
open y
f etch next from y into @NOM_FORNECEDOR
while @@fetch_Status=0
begin
--concatenando fornecedores na variável @NOM_FORNECEDOR_conc
set @NOM_FORNECEDOR_conc = @NOM_FORNECEDOR_conc + @NOM_FORNECEDOR + ', '
--loop do cursor y
f etch next from y into @NOM_FORNECEDOR
end
--fim do cursor y
close y
deallocate y
--retira última virgula
set @NOM_FORNECEDOR_conc = substring(@NOM_FORNECEDOR_conc, 1, len(@NOM_FORNECEDOR_conc)-1)
--insere na tabela virtual
insert into #temp (NOM_PRODUTO, NOM_FORNECEDOR )
values (@NOM_PRODUTO, @NOM_FORNECEDOR_conc)
--loop do cursor x
f etch next from x into @ID_PRODUTO,@NOM_PRODUTO
end
--fim do cursor x
close x
deallocate x
--consulta da tabela temporaria
select * from #temp
--apagando tabela temporaria
drop table #temp
--apagando tabelas para testes
drop table produto
drop table fornecedor
drop table forn_prod qualquer dúvida é só se manifestar. t+