[英]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_RANK
和RANK
將相同的值分配給按列順序打領帶的行。 另外, DENSE_RANK
分配“密集”等級編號,而不是“間隙”編號。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.