PostgreSQL unnest () с номером элемента

Когда у меня есть столбец с разделенными значениями, я могу использовать функцию unnest () :

myTable
id | elements
---+------------
1  |ab,cd,efg,hi
2  |jk,lm,no,pq
3  |rstuv,wxyz

select id, unnest(string_to_array(elements, ',')) AS elem
from myTable

id | elem
---+-----
1  | ab
1  | cd
1  | efg
1  | hi
2  | jk
...

Как я могу включить элемент числа? То есть:

id | elem | nr
---+------+---
1  | ab   | 1
1  | cd   | 2
1  | efg  | 3
1  | hi   | 4
2  | jk   | 1
...

Мне нужна исходная позиция каждого элемента в исходной строке. Я пробовал использовать оконные функции ( row_number () , rank () и т. Д.), Но я всегда получаю 1 . Может быть, потому что они находятся в одной строке исходной таблицы?

Я знаю, что это плохой дизайн таблицы. Это не мое, я просто пытаюсь это исправить.

69
задан Erwin Brandstetter 15 February 2016 в 03:31
поделиться