Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia, estou realizando a inserção em uma tabela devido a uma ETL, porém quando vou realizar a inserção de dados preciso realizar vários JOIN para conseguir o dado tratado, tem alguma forma de usar variáveis ou de deixar o código mais legível?
Segue um exemplo:
MERGE livraria_bi.dbo.livro AS T
USING livraria.dbo.livro AS S ON (T.liv_codigo = S.cod_livro)
WHEN NOT MATCHED BY TARGET THEN
INSERT (liv_codigo, liv_titulo, liv_autor, liv_genero)
VALUES (S.cod_livro, S.titulo, (SELECT nome_autor FROM livraria.dbo.autor WHERE cod_autor = S.cod_autor), (SELECT nome_genero FROM livraria.dbo.genero WHERE cod_genero = S.cod_genero));
Obs.:Não consegui identar o código "/
Amigo, não sei se entendi corretamente o seu problema, mas, isso não pode ser resolvido com INSERT SELECT?
Segue exemplo:
INSERT (liv_codigo, liv_titulo, liv_autor, liv_genero)
SELECT L.cod_livro, L.titulo, A.nome_autor, G.nome_genero
FROM livraria.dbo.livro AS L
INNER JOIN livraria.dbo.autor AS A ON L.cod_autor = A.cod_autor
INNER JOIN livraria.dbo.genero AS G ON L.cod_genero = G.cod_genero
WHERE L.cod_livro NOT IN
(SELECT liv_codigo FROM livraria_bi.dbo.livro GROUP BY liv_codigo)
Não sei se era exatamente isso que você queria, mas acredito que o resultado atingido seria o mesmo, com um código mais fácil de ler e de melhor performance.
Espero ter ajudado. :)