Требуется запрос выбора SQL со столбцом строки, который увеличивается только тогда, когда столбец идентификатора строки уникален - PullRequest
0 голосов
/ 30 октября 2019

Учитывая таблицу:

#  Id           Val
1  1111111111   Andre
2  1111111111   Bart
3  1111111111   Corry
4  2222222222   Donald
5  2222222222   Eric
6  3333333333   Fiona

Я хочу выбрать таблицу с индикатором: сгруппировать строки с одинаковым идентификатором, а именно получить что-то вроде:

#  Id           Val
1  1111111111   Andre
1  1111111111   Bart
1  1111111111   Corry
2  2222222222   Donald
2  2222222222   Eric
3  3333333333   Fiona

Вэто я придумал решение:

SELECT 
(
  row_number() OVER (ORDER BY id) - row_number() OVER (PARTITION BY id ORDER BY id) + 1
) nGroupedToRow,
row_number() OVER (ORDER BY id) nRow,
row_number() OVER (PARTITION BY id ORDER BY id) nNumDupl,
   id, 
   val 
FROM table1  

, которое производит:

nGroupedToRow nRow  nNumDupl Id           Val
1             1     1        1111111111   Andre
1             2     2        1111111111   Bart
1             3     3        1111111111   Corry
4             4     1        2222222222   Donald
4             5     2        2222222222   Eric
6             6     1        3333333333   Fiona

Мысль, что это может кому-то помочь ... и, может быть, кто-то может улучшить это ... может быть, подобноевопрос был задан, но я не смог его найти, хотя другие решения по переполнению стека привели меня к этому ...

http://sqlfiddle.com/#!18/b52aba/1

1 Ответ

0 голосов
/ 30 октября 2019
SELECT 
(
  row_number() OVER (ORDER BY id) - row_number() 
               OVER (PARTITION BY id ORDER BY id) + 1
) nGroupedToRow,
    row_number() OVER (ORDER BY id) nRow,
    row_number() OVER (PARTITION BY id ORDER BY id) nNumDupl,
    id, 
    val 
FROM table1  

http://sqlfiddle.com/#!18/b52aba/1

...