Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
Norberto Witt

Como consultar dados de mais de um banco e retorná-los na mesma lista?

Recommended Posts

Olá pessoal, tudo bem?

 

Pois então, deem uma olhada no print em anexo.

 

print.png

 

Como vocês podem ver existem vários bancos. Neste print estou consultando alguns dados cruzados do banco S001001.

 

Eu preciso retornar estes mesmos valores também dos demais bancos e preciso que fique tudo na mesma consulta, ou seja, ali nos valores retornados preciso que apareça a lista de varejos do banco S001001, S001002, S001003, e assim por diante... Os valores devem vir no mesmo retorno, sem criar uma nova tabela.

 

Exemplo do que preciso:

 

print 2.png

 

Esse arquivo nós consolidamos manualmente, preciso que a consulta seja feita em todos os bancos (S001001, S001002, S001003...) e que sejam retornados na mesma consulta.

 

Caso eu repita o código, apenas alterando o "USE" para o banco da sequência, ele retorna os valores, mas cada retorno, de cada banco, vem em uma tabela diferente, como podem ver:

 

print 3.png

 

print 4.png

 

Neste caso o programa retorno os dados do banco S001001 e S001002, só que em tabelas/abas diferentes.

 

Preciso que venha tudo no mesmo retorno.

 

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, fui pesquisando e consegui uma resposta. Criei um Cursor onde faz a varredura dos bancos e insere os dados do Select em uma determinada tabela.

 

DELETE FROM [PATESTE].[dbo].[Intraday]

DECLARE @DB_NAME sysname
DECLARE @DB_NAME_VARCHAR VARCHAR(100) 
DECLARE c2 CURSOR READ_ONLY 
FOR 
SELECT name FROM master..sysdatabases WHERE name NOT IN ('master', 'tempdb', 'model', 'msdb','DISTPA','PATESTE','S005025')
OPEN c2  
FETCH NEXT FROM c2 INTO @DB_NAME 
WHILE @@FETCH_STATUS = 0 
BEGIN 
EXEC('

INSERT INTO [PATESTE].[dbo].[Intraday]
SELECT DISTINCT
clientes.D100CODCLI,
'''+@DB_NAME+''',
convert(varchar, GETDATE(), 103),
convert(varchar, pedido.D152DTAETGPED, 103),
SUM(soma.D153QTDPRD),
pedido.D152VALPED

FROM ['+@DB_NAME+'].[dbo].[D100CLIENTE] clientes
INNER JOIN ['+@DB_NAME+'].[dbo].[D152PEDID] pedido ON
clientes.D100CODCLI = pedido.D152CODCLI
INNER JOIN ['+@DB_NAME+'].[dbo].[D153ITEPED] codProd ON
pedido.D152IDDPED = codProd.D153IDDPED
INNER JOIN ['+@DB_NAME+'].[dbo].[D502PRD] dsProd ON
codProd.D153CODPRD = dsProd.D502CODPRD
INNER JOIN ['+@DB_NAME+'].[dbo].[D505TIP] tipo ON
dsProd.D502CODTIP = tipo.D505CODTIP
INNER JOIN ['+@DB_NAME+'].[dbo].[D153ITEPED] soma ON
pedido.D152IDDPED = soma.D153IDDPED

GROUP BY
clientes.D100CODCLI,
convert(varchar, pedido.D152DTAETGPED, 103),
pedido.D152VALPED

')

FETCH NEXT FROM c2 INTO @DB_NAME
END  
CLOSE c2 
DEALLOCATE c2

 

Muito obrigado pela ajuda, até mais!

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora
Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×