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

V předešlých dílech tohoto miniseriálu o hierarchiích jsme zapomněli na jednu věc, která se může hodit a tou je způsob jak zmapovat v hierarchii hloubku jednotlivých členů neboli úroveň hierarchie. Stejně tak může být užitečné umět zobrazit Path – cestu jednotlivých členů hierarchie. Vycházet budu opět z prvního dílu o úvodu do parent – child hierarchie a tabulky se zaměstnanci, kterou jsem si v rámci tohoto článku připravil.

Určení úrovně hierarchie a cesty (Path)

WITH nadrizeny AS
(
--vyber nadzizeneho
SELECT id_zamestnanec, id_nadrizeny, pozice, jmenoprijmeni,plat, 0 AS Hierarchy_Level,
CAST(jmenoprijmeni AS VARCHAR(1024)) AS Path_jmenoprijmeni,
CAST(id_zamestnanec AS VARCHAR(1024)) AS Path_id_zamestnanec
FROM Temp.dbo.zamestnanci
WHERE id_zamestnanec=15
UNION ALL
--rekurzivní dotaz na jeho podřízené
SELECT zam.id_zamestnanec, zam.id_nadrizeny, zam.pozice, zam.jmenoprijmeni, zam.plat, Hierarchy_Level+1,
CAST(nad.Path_jmenoprijmeni + ' | ' + CAST(zam.jmenoprijmeni AS VARCHAR(1024)) AS VARCHAR(1024)) AS Path_jmenoprijmeni,
CAST(nad.Path_id_zamestnanec + ' | ' + CAST(zam.id_zamestnanec AS VARCHAR(1024)) AS VARCHAR(1024)) AS Path_id_zamestnanec
FROM Temp.dbo.zamestnanci zam INNER JOIN nadrizeny nad
ON zam.id_nadrizeny = nad.id_zamestnanec
)
SELECT
id_zamestnanec,
jmenoprijmeni,
pozice,
plat,
Hierarchy_Level,
Path_jmenoprijmeni,
Path_id_zamestnanec
FROM nadrizeny;

Výsledek je na obrázku níže

  • Hierarchy_Level – zobrazení úrovně člena hierarchie. Ředitel má 0, manažer 1 a zaměstnanec 2. Pokud by měla hierarchie více členů, tak by bylo více levelů
  • Path_jmenoprijmeni – zobrazení cesty od nejvyššího člena k nejnižšímu. Zobrazujeme jméno a příjmení oddělení znakem “|”
  • Path_id_zamestnanec – podobně jao v předchozím případě je to cesta, ale zobrazujeme ID. To nám může lépe vyhovovat kvůli rychlosti dotazu a také s tímto formátem rychleji pracují některé reportovací nástroje – např. Power BI

Úroveň hierarchie - ukázka příkladu

5/5 - (2 votes)

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 »

Leave a Reply

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