sql >> Database teknologi >  >> RDS >> Sqlserver

MS Excel - sammenføj eksterne (SQL) data med lokal tabel (ark)

Min kommentar ovenfor var blot beregnet til at åbne nogle få muligheder, som du måske har ved hånden.

PowerQuery er et gratis plug-in til Office 2013. I Office 2016 er det en del af Excel og ikke længere et plug-in.

Uanset hvad, du synes at foretrække fremgangsmåden til at bruge en midlertidig tabel eller en tabelvariabel på din SQL. Derfor vil jeg uddybe lidt mere om denne tilgang:

I sidste ende vil du have en forespørgsel, der ligner denne:

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;

Bemærk vigtigheden af ​​set nocount on; i starten af ​​ovenstående SQL-forespørgsel. Uden det fungerer det ikke!

Når du først har fået denne forespørgsel, kan du blot indsætte den i Excel ved hjælp af menuen DataGet External DataFrom SQL Server . I et første trin vil du få kundetabellen og derefter i et andet trin forfine forespørgslen til at inkludere tabelvariablen som beskrevet ovenfor. Her er en kort visuel oversigt:

Jeg formoder, på dette tidspunkt er de eneste tilbageværende spørgsmål:

  1. Hvordan opretter du dynamisk ovenstående SQL-sætning og
  2. hvordan får du ovenstående tabel i Excel og derefter opdateret med denne opdaterede SQL-sætning.

For dynamisk at oprette ovenstående SQL kan du måske se på følgende:Brug af en matrix eller ordbog fra klausul i sql i excel vba

I går besvarede jeg et lignende spørgsmål, hvor en bruger ønskede at videregive indholdet af et Excel-ark som en dynamisk oprettet tabel til en SQL Server. Du kan nemt tilpasse (eller endda bruge det som det er) til dit formål.

Til det sidste trin (opdater denne tabel i Excel med denne nye SQL-forespørgsel) kan du bruge makrooptageren og gøre, hvad jeg gjorde i ovenstående skærmbillede. Den automatisk oprettede kode er intet mere/mindre end hvad jeg vil foreslå dig.

Så der har du det. Fortæl mig, hvis jeg ikke var tydelig nok, eller hvis du har brug for yderligere detaljer for at forstå denne løsning.




  1. MySQL's forskellige anførselstegn

  2. Brug af mysql_real_escape_string med PDO (ingen forbindelse til localhost-server)

  3. Der er opstået en fejl på transportniveau ved modtagelse af resultater fra serveren

  4. Hvordan kopierer man docker-volumen fra én maskine til en anden?