sql >> Databáze >  >> RDS >> Sqlserver

MS Excel - spojení externích (SQL) dat s lokální tabulkou (listem)

Můj výše uvedený komentář měl pouze otevřít několik možností, které byste mohli mít po ruce.

PowerQuery je bezplatný plug-in pro Office 2013. V Office 2016 je součástí Excelu a již není plug-inem.

Každopádně se zdá, že preferujete přístup k použití dočasné tabulky nebo proměnné tabulky na vašem SQL. Proto se o tomto přístupu trochu více rozepíšu:

Nakonec budete chtít dotaz podobný tomuto:

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;

Všimněte si důležitosti set nocount on; na začátku výše uvedeného SQL dotazu. Bez toho to nebude fungovat!

Jakmile budete mít tento dotaz, můžete jej jednoduše vložit do Excelu pomocí nabídky DataGet External DataFrom SQL Server . V prvním kroku získáte tabulku zákazníků a ve druhém kroku upřesníte dotaz tak, aby zahrnoval proměnnou tabulky, jak je popsáno výše. Zde je krátké vizuální shrnutí:

Myslím, že v tuto chvíli zbývají jediné otázky:

  1. Jak dynamicky vytvoříte výše uvedený příkaz SQL a
  2. jak získáte výše uvedenou tabulku v aplikaci Excel a poté ji aktualizujete tímto aktualizovaným příkazem SQL.

Chcete-li dynamicky vytvořit výše uvedený SQL, můžete se podívat na následující:Použití pole nebo slovníku jako z klauzule v SQL v aplikaci Excel vba

Zrovna včera jsem odpovídal na podobnou otázku, kdy chtěl uživatel předat obsah listu Excelu jako dynamicky vytvořenou tabulku na SQL Server. Můžete jej snadno přizpůsobit (nebo jej dokonce používat tak, jak je) pro svůj účel.

Pro poslední krok (aktualizace této tabulky v Excelu tímto novým SQL dotazem) můžete použít záznam maker a udělat to, co jsem udělal na výše uvedeném snímku obrazovky. Automaticky vytvořený kód není nic víc/méně než to, co bych vám navrhl.

Tak, tady to máte. Dejte mi vědět, pokud jsem nebyl dostatečně jasný nebo pokud potřebujete další podrobnosti, abyste porozuměli tomuto řešení.




  1. Mohu použít objekty Django F() se zřetězením řetězců?

  2. Jak pracovat s databázemi PostgreSQL

  3. Neo4j - Vytvořte uzel pomocí Cypher

  4. Proč se v SQL nemůže NULL shodovat s NULL?