Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
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
  • Autor do tópico
  • 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

    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

    ×