DENSE_RANK (Transact-SQL)
Zwraca pozycję wiersze w partycji zestaw wyników, bez żadnych przerw w klasyfikacji.Pozycja wiersza jest jeden powiększona o liczbę odrębnych rangę, dostarczanych przed wierszem danego.
Składnia
DENSE_RANK ( ) OVER ( [ <partition_by_clause> ] < order_by_clause > )
Argumenty
<partition_by_clause>
Dzieli zestaw wyników produkowanych przez FROM klauzula do partycji stosowane jest DENSE_RANK funkcja .Zobacz składnię PARTYCJI przez Klauzula OVER (Transact-SQL).<order_by_clause>
Określa kolejność, w której wartości DENSE_RANK są stosowane do wierszy w partycji.Liczba całkowita nie może reprezentować kolumna w <order_by_clause> , używany w klasyfikacji funkcja.
Zwracane typy
bigint
Uwagi
Jeśli dwa lub więcej wierszy powiązanie funkcji pozycja w tej samej partycji, poszczególnych wierszy wiązanej otrzymuje tę samą rangę.Na przykład, jeśli dwóch sprzedawców mają taki sam SalesYTD wartości, zarówno Uszeregowano je jeden.Sprzedawcy z następnego najwyższego SalesYTD klasyfikację numer dwa.Jest to jedna większa niż liczba wierszy distinct, dostarczanych przed tego wiersza.W związku z tym liczby zwróconych przez funkcja DENSE_RANK ma luki i nie zawsze mieć kolejnych rangę.
kolejność sortowania używane dla całej kwerendy określa kolejność wyświetlania wierszy w wyniku.Wynika z tego wiersza pierwsze nie ma być pierwszy wiersz w tej partycji.
Przykłady
Poniższy przykład zwraca DENSE_RANK ilości produktów w różnych lokalizacjach.Należy zauważyć, że ORDER BY w OVERzamówieńklauzula DENSE_RANK i ORDER BY z SELECTinstrukcja zamówienia, zestaw wyników.
USE AdventureWorks2008R2;
GO
SELECT i.ProductID, p.Name, i.LocationID, i.Quantity,
DENSE_RANK() OVER (PARTITION BY i.LocationID ORDER BY i.Quantity) AS DENSE_RANK
FROM Production.ProductInventory i
INNER JOIN Production.Product p
ON i.ProductID = p.ProductID
ORDER BY Name;
GO