簡體   English   中英

如何為相同的值獲取相同的rownumber()

[英]How to get same rownumber() for same values

如果列周和描述中的值重復,則需要獲得相同的“行號”。 對於下表:

╔════════╦═══════╦
║  Week  ║ Desc  ║
╠════════╬═══════╬
║      1 ║  FF   ║
║      1 ║  ss   ║
║      1 ║  ss   ║
║      2 ║  FF   ║
║      2 ║  ss   ║
║      4 ║  FF   ║
║      4 ║  FF   ║
║      4 ║  ss   ║
║      4 ║  ss   ║
╚════════╩═══════╝

預期結果是:

╔════════╦═══════╦════════╗
║  Week  ║ Desc  ║ RowNum ║
╠════════╬═══════╬════════╬
║      1 ║  FF   ║    1   ║
║      1 ║  ss   ║    2   ║
║      1 ║  ss   ║    2   ║
║      2 ║  FF   ║    1   ║
║      2 ║  ss   ║    2   ║
║      4 ║  FF   ║    1   ║
║      4 ║  FF   ║    1   ║
║      4 ║  ss   ║    2   ║
║      4 ║  ss   ║    2   ║
╚════════╩═══════╩════════╝

您需要DENSE_RANK而不是ROW_NUMBER

SELECT Week
     , [Desc]
     , DENSE_RANK() OVER (PARTITION BY Week ORDER BY [Desc]) AS [Rank #]
FROM t

DENSE_RANKRANK將相同的值分配給按列順序打領帶的行。 另外, DENSE_RANK分配“密集”等級編號,而不是“間隙”編號。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM