Táto stránka pre svoju správnu funkčnosť vyžaduje súbory cookies. Slúžia na authentifikáciu návštevníka, analýzu návštevnosti a reklamnú personalizáciu.
logo Knowledge base KB
mobile

Číslovanie riadkov v SELECT-e

Číslo riadka vo výsledku SELECT-u má okrem informatívnej hodnoty (napríklad vizuálna kontrola výsledku) aj funkčné využitie. Môžeme ho použiť napríklad ako pomocný identifikátor riadka v dočasnej tabuľke, ak ostatné hodnoty v riadkoch nemusia byť unikátne.

Na očíslovanie riadka môžeme použiť funkciu ROW_NUMBER, ktorá pomocou svojej ORDER BY klauzuly zoradí riadky vo výsledku. V prípade, ak potrebujeme číslovanie v rámci nejakej podskupiny dát, môžeme použiť nepovinný argument PARTITION BY.

V nasledujúcom príklade očíslujeme všetky riadky výsledku SELECT-u do stĺpca LineNum a pomocou PARTITION BY si očíslujeme riadky podľa krstného mena FirstName do stĺpca NameNum.

Zdrojový kód:
/*Testovacia tabulka*/
CREATE TABLE #Data ([FirstName] NVARCHAR(50), [LastName] NVARCHAR(100))

/*Testovacie data*/
INSERT INTO #Data ([FirstName], [LastName])
SELECT 'Janko', 'Mrkvicka'
UNION ALL
SELECT 'Janko', 'Hraško'
UNION ALL
SELECT 'Peter', 'Slovak'
UNION ALL
SELECT 'Peter', 'Vysoky'
UNION ALL
SELECT 'Marek', 'Toth'
UNION ALL
SELECT 'Marek', 'Kovac'

/*Ocislujeme riadky*/
SELECT
ROW_NUMBER() OVER (ORDER BY [FirstName], [LastName]) as [LineNum],
ROW_NUMBER() OVER (PARTITION BY [FirstName] ORDER BY [FirstName], [LastName]) as [NameNum],
[FirstName], [LastName]
FROM #Data
ORDER BY [FirstName], [LastName]

/*Vymaz testovacej tabulky*/
DROP TABLE #Data


Viac info:
docs.microsoft.com - ROW_NUMBER (Transact-SQL) > link <

Keywords: MS SQL, SELECT, ROW_NUMBER

Codeblog