Создайте столбец, сгруппированный с использованием аналогичных значений в другом столбце. - PullRequest
0 голосов
/ 01 октября 2018

Я новичок в SQL / T-SQL, и было бы здорово, если бы кто-нибудь мог помочь мне решить эту проблему.

Итак, у меня есть столбец RID:

RID 
111
111
111
222
222
222
333
333
333

Теперь янеобходимо использовать t-sql ROW_NUMBER с BY GROUP или BY_PARTITION, чтобы получить следующий результат:

RID  |  No
111 |  1
111 |  1
111 |  1
222 |  2
222 |  2
222 |  2
333 |  3
333 |  3
333 |  3

Большое спасибо.Хорошего дня: D

Ответы [ 3 ]

0 голосов
/ 01 октября 2018

у вас есть возможность для плотного_ранка

select * ,dense_rank over (order by rid ) as No from t
0 голосов
/ 01 октября 2018

DENSE_RANK Функция позволит вам ранжировать каждую строку на основе значения в RID.Смотрите макет ниже:

DECLARE @TestTable table (RID INT)
INSERT INTO @TestTable
SELECT 111 UNION ALL
SELECT 111 UNION ALL
SELECT 111 UNION ALL
SELECT 222 UNION ALL
SELECT 222 UNION ALL
SELECT 222 UNION ALL
SELECT 333 UNION ALL
SELECT 333 UNION ALL
SELECT 333 UNION ALL
SELECT 333 



SELECT 
    RID, 
    [No]=DENSE_RANK() over (order by RID) 
FROM
    @TestTable
0 голосов
/ 01 октября 2018

Вы можете использовать dense_rank():

select rid, dense_rank() over (order by rid) as num
from t;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...