带有元素号的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..也许是因为它们在源表的同一行中?
我知道这是个糟糕的桌子设计。不是我的,我只是想修好它。
慕的地8271018
相关分类