The Wayback Machine - http://web.archive.org/web/20140105212603/http://msdn.microsoft.com:80/zh-tw/library/ms173825(v=sql.90).aspx
匯出 (0) 列印
全部展開
Expand Minimize
本主題尚未接受評分 - 為這個主題評分

DENSE_RANK (Transact-SQL)

傳回結果集資料分割內之資料列次序,次序中沒有任何間距。資料列次序是一個加上相關資料列前面之相異次序的數目。

主題連結圖示 Transact-SQL 語法慣例


DENSE_RANK ( )    OVER ( [ < partition_by_clause > ] < order_by_clause > )
< partition_by_clause >

將 FROM 子句所產生的結果集分成套用 DENSE_RANK 函數的資料分割。如需 PARTITION BY 的語法,請參閱<OVER 子句 (Transact-SQL)>。

< order_by_clause >

決定將 DENSE_RANK 值套用於資料分割中之資料列的順序。在用於次序函數的 <order_by_clause> 中,整數不能代表資料行。

bigint

如果在相同資料分割中,針對某個次序聯結了兩個或更多資料列,每個聯結的資料列都會收到相同的次序。例如,如果兩位超級業務員有相同的 SalesYTD 值,他們的次序便都是第一。SalesYTD 次高的業務員之次序便是第二。這便是在這個資料列之前的相異資料列數加一。因此,DENSE_RANK 函數所傳回的數目不會有間距,次序一律是連續的。

整個查詢的排序順序決定了資料列在結果中的出現順序。這隱含次序第一的資料列,不一定是資料分割中的第一個資料列。

下列範例會傳回不同位置之產品數量的 DENSE_RANK。請注意,OVER 子句中的 ORDER BY 會排列 DENSE_RANK 的順序,而 SELECT 陳述式的 ORDER BY 會排列結果集的順序。

USE AdventureWorks;
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 
    JOIN Production.Product p ON i.ProductID = p.ProductID
    ORDER BY Name;
GO
本文對您有任何幫助嗎?
(剩餘 1500 個字元)

社群新增項目

新增
Image
Microsoft 正展開一份線上問卷調查,了解您對於 MSDN 網站的看法。 如果您選擇參加,您離開 MSDN 網站時即會顯示線上問卷調查。

您是否想要參加?
顯示:
© 2014 Microsoft. 著作權所有,並保留一切權利。