Если в моей таблице есть эти значения, мне нужно создать столбец seqno

ClientId clinetLocation seqno
001        Abc           1
001        BBc           2
001        ccd           3
002        Abc           1
002        BBc           2
003        ccd           1
sql
0
Kmd 24 Ноя 2018 в 15:32

2 ответа

Лучший ответ

Вы ищете функцию row_number():

select ClientId, clinetLocation,
       row_number() over (partition by ClientId order by clinetLocation) as seqnum
from t;

Это стандартная функция, доступная в большинстве баз данных.

1
Gordon Linoff 24 Ноя 2018 в 12:35

Один из вариантов - подсчет сгруппированных строк по этим столбцам:

select count(1) over ( order by ClientId, ClientLocation ) as seqno, 
       ClientId, ClientLocation
  from tab
 group by ClientId, ClientLocation;

где комбинация ClientId и ClientLocation кажется уникальной.

Rextester Demo

0
Barbaros Özhan 24 Ноя 2018 в 12:53