我有一张像雪花一样的table:
ID | CODES
2 | [ { "list": [ { "item": "CODE1" }, { "item": "CODE2" } ] } ]
我想把它变成:
ID | CODES
2 | 'CODE1'
2 | 'CODE2'
到目前为止我已经试过了
SELECT ID,CODES[0]:list
FROM MY_TABLE
但我只知道:
ID | CODES
2 | [ { "item": "CODE1" }, { "item": "CODE2" } ]
如何将此列表的每个索引中的每个“item”元素拆分为自己的行,并将每个代码作为一个字符串?
更新:这是我得到的答案与下面的答案同时工作,看起来我们都使用了扁平化:
SELECT ID,f.value:item
FROM MY_TABLE,
lateral flatten(input => MY_TABLE.CODES[0]:list) f
1条答案
按热度按时间kuhbmx9i1#
所以正如你所注意到的,你已经硬编码进入密码,通过
codes[0]
这将提供该数组中的第一项,如果使用“展平”,则可以访问第一个数组中的所有对象。给予:
所以现在你想在
list
,所以我们使用另一个展平:给予:
所以你可以把它拆开
l.value
如何访问所需的部件。