Как получить одинаковое значение rownumber () для одинаковых значений - PullRequest
0 голосов
/ 29 апреля 2019

Необходимо получить тот же «номер строки», если значения повторяются в столбце Week и Desc.Для следующей таблицы:

╔════════╦═══════╦
║  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   ║
╚════════╩═══════╩════════╝

1 Ответ

7 голосов
/ 29 апреля 2019

Вы хотите, чтобы 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 дополнительно назначает «плотные» ранговые числа вместо «зазоров».

...