Применение того же идентификатора строки на основе раздела ROW_NUMBER - PullRequest
0 голосов
/ 10 декабря 2018

Я пытаюсь последовательно добавлять номера строк на основе значения DOC - единственное условие, которое у меня есть, - если документ одинаков (как три последние строки), он должен получить тот же номер строки.

SELECT [DOC], ROW_NUMBER()  OVER(PARTITION BY [DOC] ORDER BY [DOC])
FROM [rowset_TST]

После того, как я получу прямо противоположное - последние три документа, которые одинаковы, нумеруются, а остальные нет: ZZB, который не является уникальным, должен получить тот же номер строки.

ABC 1 DBS   1 DDS   1 SBC   1
SSC 1 ZZB   1 ZZB   2 ZZB   3

Любой совет оченьпризнателен - скажите, пожалуйста, можно ли это сделать с помощью ROW_NUMBER ()

С уважением, Люк

1 Ответ

0 голосов
/ 10 декабря 2018

Я думаю, что вы намереваетесь использовать здесь функцию ранга, возможно DENSE_RANK:

SELECT [DOC], DENSE_RANK() OVER (ORDER BY [DOC])
FROM [rowset_TST]
ORDER BY [DOC];

Это приведет к следующему выводу, при условии, что ваши данные образца такие же:

enter image description here

Это единственная интерпретация вашего вопроса / требования, которая пришла в голову и имеет какой-то смысл.Если вы действительно хотите, чтобы каждый документ, встречающийся один или несколько раз, имел значение «номер строки», равное 1, тогда я не вижу смысла в использовании ROW_NUMBER.

...