Lorsque j'ai une colonne avec des valeurs séparées, je peux utiliser la fonction unnest()
fonction :
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
...
Comment puis-je inclure des numéros d'éléments ? Par exemple :
id | elem | nr
---+------+---
1 | ab | 1
1 | cd | 2
1 | efg | 3
1 | hi | 4
2 | jk | 1
...
Je veux que le position initiale de chaque élément de la chaîne source. J'ai essayé avec des fonctions de fenêtre ( row_number()
, rank()
etc.) mais j'obtiens toujours 1
. Peut-être parce qu'ils se trouvent sur la même ligne du tableau source ?
Je sais qu'il s'agit d'une mauvaise conception de la table. Ce n'est pas le mien, j'essaie juste de le réparer.