V předchozím článku jsem se týkalo využití ŘÁDKY PŘEDCHÁZEJÍCÍ a NÁSLEDUJÍCÍ v průběhu doložky. Pro tento příklad použiji stejnou databázi a tabulky, které jsem vytvořil v předchozím příkladu, abych zobrazil řádky neomezené jak předcházející, tak následující.,
jednou z nových funkcí dostupných v TSQL v SQL Server 2012 jsou řádky neohraničené Předcházející a řádky neohraničené následující možnosti. Neomezená možnost k dispozici při použití předchozích a následujících možností. Zde je návod, jak pracují…
ŘÁDKY NESPOUTANÝ PŘEDCHOZÍ
-- ROWS UNBOUNDED PRECEDINGselect Year, DepartmentID, Revenue, min(Revenue) OVER (PARTITION by DepartmentID ORDER BY ROWS UNBOUNDED PRECEDING) as MinRevenueToDatefrom REVENUEorder by departmentID, year;
V tomto příkladu, MinRevenueToDate seznamy nejnižší příjmy pro tento řádek a všechny předchozí řádky seřazeny podle data v aktuální id oddělení.
můžete vidět, že řádek 1 nastaví MinRevenueToDate na 10030 a nezmění se až do řádku 7 s nižším příjmovým rokem.,
pak řádek 16 začíná znovu pro nové oddělení s nejnižšími běžícími příjmy k dnešnímu dni. Poté řádek 21 resetuje na nižší číslo příjmů.
ŘÁDKY NESPOUTANÝ NÁSLEDUJÍCÍ
pro příklad NESPOUTANÝ NÁSLEDUJÍCÍ:
-- ROWS UNBOUNDED FOLLOWINGselect Year, DepartmentID, Revenue, min(Revenue) OVER (PARTITION by DepartmentID ORDER BY ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) as MinRevenueBeyondfrom REVENUEorder by departmentID, year;
Kde můžete vidět, že min(Příjmů) se počítá přes všechny řádky od aktuální řádek na konec souboru rozdělený podle departmentID.,
neomezená volba je velmi užitečná pro určení výpočtu od začátku sady do aktuálního řádku nebo od aktuálního řádku do konce sady nebo skupiny.
mějte na paměti, že tato funkce byla zavedena v SQL Server 2012 a není k dispozici v dřívějších vydáních.
Související odkazy
- SQL Query Training
- CTE data Paging
- OVER Clause with ROWS and RANGE
Napsat komentář