Rovnou na začátku říkám jde to, ale příliš tento postup moc nedoporučuji (ale stejně ho sem dám) :). Obecně spouštění dotazů SQL v Excelu není optimální, ale někdy není zbytí. Tento návod je určen pokročilým uživatelům Excelu se znalostmi SQL.

Pokud jste power user a v Excelu máte analytiku, může se vám to hodit pro automatizaci Excel reportů ;). Nota bene pokud se vám nechce dělat report v Power BI nebo PowerPivot, což je mimochodem dobrá volba pro import dat z databáze.

Vytvoření jednoduché procedury v SQL Server

Po demonstraci si vytvořme primitivní proceduru, která bude vracet tržby po měsících. Vstupními parametry do této procedury bude:

  • @DATE_FROM – Datum od kterého chceme tržby počítat
  • @DATE_TO – Datum do kterého chceme tržby počítat

Cílem je proceduru volat s parametry tak, aby nám vracela výsledky pouze za období, které chceme sledovat. Pokud to nedáte, poproste někoho z IT 🙂

SQL procedura může vypadat nějak takto:

CREATE PROCEDURE Get_Sales (@DATE_FROM DATE, @DATE_TO DATE)
AS
BEGIN
  SELECT
    b.CalendarYear,
    b.MonthNumberOfYear,
    SUM(SalesAmount) AS SalesAmount
  FROM AdventureWorksDW2014.dbo.FactInternetSales a join AdventureWorksDW2014.dbo.DimDate b
        on a.OrderDateKey=b.DateKey
  WHERE b.FullDateAlternateKey BETWEEN @DATE_FROM AND @DATE_TO
  GROUP BY
    b.CalendarYear,
    b.MonthNumberOfYear
END;

…a otestujeme, že procedura funguje OK:

EXEC dbo.Get_Sales '2013-01-01','2013-02-28'

SQL v Excelu

Napojení SQL Procedury do Excelu

1) Nejdříve si Excel nachystáme. Otevřeme si ho a připravíme si vstupní parametry pro proceduru, které budou 2 (Datum_Od a Datum_Do). Tyto parametry budeme moci později měnit a procedura nám na základě toho bude vracet výsledky z databáze.

2) Dále klikneme na Data – Z jiných zdrojů – Z Microsoft Query

3) Vybereme Nový zdroj dat

4) Nový zdroj si pojmenujeme a jako ovladač zvolíme “ODBC Driver 11 for SQL Server”, potom klikneme na “3 Pripojit”

5) Do pole Server napíšeme název SQL instance a použijeme Trusted connection

6) Následně vše potvrdíme, a až se dostaneme na okno “Průvodce dotazem – volba sloupců” dáme Cancel

7) Následující okno “Pridat tabulky” zavřeme také, chceme se dostat do rozhraní kam si můžeme napsat vlastní SQL dotaz

8) Na následující obrazovce klikneme na tlařítko SQL (označeno červeně) a do SQL Dotazu napíšeme:

{CALL Temp.dbo.Get_Sales (?,?)}

9) Následně potvrdíme OK a potvrdíme OK i následující 3 okna: a) Opravdu chcete potvrdit… b) Parametr 1 necháme prázdný c) Parametr 2 necháme prázdný. Poté bychom se měli dostat do tohoto stavu:

10) Dáme Ok a následně po nás Excel chce odkázad na buňky s parametry. Parametr 1 nastavíme na Datum Od (buňka B1) a Parametr 2 na Datum Do (buňka B2)

11) Poté potvrdíme a je HOTOVO, Excel Načítá data a máme nastavenou proceduru SQL v Excelu

12) a následně vrací výsledek. Teď máme nachystaný Excel, který komunikuje se SQL Server databází a vrací nám tržby na základě datumů v Excel buňkách B1 a B2

Rate this post

Ing. Jan Zedníček - Data Engineer & Controlling

Jmenuji se Honza Zedníček a působím jako freelancer. Pracoval jsem dříve také jako BI developer, finanční controller a analytik. Vše pro společnosti z oblasti IT, bankovnictví, consultingu a výroby. Po práci si rád zahraju tenis, volejbal, šachy, zajdu do posilovny a občas neúspěšně odpálím pár balónků v golfu 🏌️

Již cca 10 let zapisuji na tento web různé návody určené zejména odborné veřejnosti, studentům a zájemcům o informace z oblastí Business intelligence, korporátních financí a reportingu.

🔥 Přihlašte se do naší Excel facebook skupiny (2.4k+ členů), kde si pomáháme Excel CZ/SK diskuse »

4 comments on “Jak spustit proceduru SQL v Excelu s Parametry + Příklad

  1. Pánové děkuji, tohle jsem přesně hledal. Aby si zákazník mohl v excelu zadat parametr filtru a v několika tabulkách se mu odfiltrovali různé přehledy pro danou organizaci.

  2. Moc děkuji za skvělý návod. Přesně tohle jsem potřebovala a už delší dobu jsem se s tím trápila.

Leave a Reply

Your email address will not be published. Required fields are marked *