ROW_NUMBER (Transact-SQL) (Čeština)

  • 09/11/2017
  • 5 minut na čtení
    • j
    • c
    • M
    • m
    • M
    • +8

Platí pro: SQL Server (všechny podporované verze) Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Paralelní datový sklad

Vyčísluje výstup sady výsledků. Přesněji, vrací pořadové číslo řádku v rámci oddílu sady výsledků, počínaje 1 pro první řádek v každém oddílu.

Poznámka

ROW_NUMBER je dočasná hodnota vypočítaná při spuštění dotazu. Chcete-li zachovat čísla v tabulce, přečtěte si téma IDENTITY a SEKVENCE.

Konvence syntaxe jazyka Transact-SQL

Syntax

Poznámka

Chcete-li zobrazit syntaxi Transact-SQL pro SQL Server 2014 a starší, přečtěte si dokumentaci Předchozí verze.

Argumenty

PARTITION BY value_expression
Rozdělí sadu výsledků vytvořenou klauzulí FROM na oddíly, na které se použije funkce ROW_NUMBER. value_expression určuje sloupec, podle kterého je rozdělena sada výsledků. Pokud PARTITION BY není zadán, bude funkce považovat všechny řádky sady výsledků dotazu za jednu skupinu. Další informace najdete v části OVER Clause (Transact-SQL).

order_by_clause
Klauzule ORDER BY určuje pořadí, ve kterém jsou řádkům přiřazeny jejich jedinečné ROW_NUMBER v rámci zadaného oddílu. Je vyžadováno. Další informace najdete v části OVER Clause (Transact-SQL).

Vrácené typy

bigint

Obecné poznámky

Neexistuje žádná záruka že řádky vrácené dotazem pomocí ROW_NUMBER() budou při každém provedení seřazeny přesně stejně, pokud nebudou splněny následující podmínky.

  1. Hodnoty sloupce s oddíly jsou jedinečné.

  2. Hodnoty sloupců ORDER BY jsou jedinečné.

  3. Kombinace hodnot sloupce oddílu a ORDER BY sloupců jsou jedinečné.

ROW_NUMBER() je nedeterministické. Další informace najdete v části Deterministické a nedeterministické funkce.

Příklady

A. Jednoduché příklady

Následující dotaz vrátí čtyři systémové tabulky v abecedním pořadí.

Zde je sada výsledků.

name recovery_model_desc
mistr JEDNODUCHÝ
model FULL
msdb JEDNODUCHÝ
tempdb JEDNODUCHÉ

Chcete-li před každý přidat sloupec s číslem řádku řádek, přidejte sloupec s funkcí ROW_NUMBER, v tomto případě s názvem Row#. Klauzuli ORDER BY musíte přesunout až do klauzule OVER.

Zde je sada výsledků.

Řádek # name recovery_model_desc
1 mistr JEDNODUCHÝ
2 model FULL
3 msdb JEDNODUCHÉ
4 tempdb JEDNODUCHÉ

Přidání PARTITION BY ve sloupci recovery_model_desc restartuje číslování, když se změní hodnota recovery_model_desc.

Zde je sada výsledků.

Řádek # name recovery_model_desc
1 model PLNÝ
1 hlavní JEDNODUCHÝ
2 msdb JEDNODUCHÉ
3 tempdb JEDNODUCHÉ

B. Vrácení čísla řádku pro prodejce

Následující příklad vypočítá číslo řádku pro prodejce v Adventure Works Cycles na základě jejich aktuálního pořadí prodejů.

Zde je sada výsledků .

C.Vrácení podmnožiny řádků

Následující příklad vypočítá čísla řádků pro všechny řádky v tabulce SalesOrderHeader v pořadí OrderDate a vrátí pouze řádky 50 do 60 včetně.

D. Použití ROW_NUMBER () s PARTITION

Následující příklad používá argument PARTITION BY k rozdělení výsledku dotazu nastaveného sloupcem TerritoryName. Klauzule ORDER BY uvedená v klauzuli OVER objednává řádky v každém oddílu podle sloupce SalesYTD. Klauzule ORDER BY v příkazu SELECT objednává celý výsledek dotazu nastavený pomocí TerritoryName.

Zde je sada výsledků.

Příklady: Azure Synapse Analytics a Parallel Data Warehouse

E. Vrácení čísla řádku pro prodejce

Následující příklad vrátí ROW_NUMBER pro obchodní zástupce na základě jejich přidělené prodejní kvóty.

Zde je dílčí sada výsledků.

F. Použití ROW_NUMBER () s PARTITION

Následující příklad ukazuje použití funkce ROW_NUMBER s argumentem PARTITION BY. To způsobí, že funkce ROW_NUMBER očísluje řádky v každém oddílu.

Zde je částečná sada výsledků.

Viz také

RANK (Transact-SQL)
DENSE_RANK (Transact-SQL)
NTILE (Transact-SQL)

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *