Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

MS Excel - junte dados externos (SQL) com tabela local (folha)


Meu comentário acima foi apenas destinado a abrir algumas possibilidades que você pode ter em mãos.

O PowerQuery é um plug-in gratuito para o Office 2013. No Office 2016 ele faz parte do Excel e não é mais um plug-in.

De qualquer forma, você parece preferir a abordagem de usar uma tabela temporária ou uma variável de tabela em seu SQL. Por isso, vou elaborar um pouco mais sobre essa abordagem:

No final, você desejará uma consulta semelhante a esta:
set nocount on;
declare @tblVAT table
    (
     Country nvarchar(50),
     VAT decimal(9, 7)
    );

insert  into @tblVAT
        (Country, VAT)
values  (N'Germany', 0.19),
        (N'Frence', 0.20),
        (N'Spain', 0.21);


select  tc.Name,
        tc.ID,
        case when tc.Country is null then tv.Country
             else tc.Country
        end as Country,
        tv.VAT
from    dbo.tblCustomers as tc
full outer join @tblVAT as tv
on      tv.Country = tc.Country;

Observe a importância de set nocount on; no início da consulta SQL acima. Sem isso não funcionará!

Uma vez que você tenha esta consulta, você pode simplesmente colá-la no Excel usando o menu DataGet External DataFrom SQL Server . Em uma primeira etapa, você obterá a tabela do cliente e, em uma segunda etapa, refinará a consulta para incluir a variável da tabela, conforme descrito acima. Aqui está um breve resumo visual:



Eu acho que, neste momento, as únicas perguntas restantes são:
  1. Como você cria dinamicamente a instrução SQL acima e
  2. como você obtém a tabela acima no Excel e atualizada com esta instrução SQL atualizada.

Para criar dinamicamente o SQL acima, você pode dar uma olhada no seguinte:Usando um array ou dicionário como from cláusula no sql no excel vba

Ainda ontem eu respondi uma pergunta semelhante onde um usuário queria passar o conteúdo de uma planilha do Excel como uma tabela criada dinamicamente para um SQL Server. Você pode facilmente adaptar (ou até mesmo usá-lo como está) para seu propósito.

Para a última etapa (atualize esta tabela no Excel com esta nova consulta SQL), você pode usar o gravador de macro e fazer o que fiz na captura de tela acima. O código criado automaticamente é nada mais/menos do que eu proporia a você.

Então, aí está. Deixe-me saber se eu não fui claro o suficiente ou se você precisar de mais detalhes para entender esta solução.