我有包含两列col1
和col2
的TableA
。我想查询col1
和col2
中的所有结果,并将它们插入到新TableB newCol
中。
我遇到了一个障碍,我是否可以用一个查询来做到这一点:
Insert into TableB
(newCol)
select SOMEFUNCTION(col1,col2)
from TableA;
因此,如果TableA
导致行:
{1,2},{3,4}
插入TableB
时,行将是:
{1},{2},{3},{4}
你能告诉我是否有一个由 SOMEFUNCTION()
表示的函数可以在 Redshift 中发挥作用吗?
Split_part
函数。 https://docs.aws.amazon.com/redshift/latest/dg/SPLIT_PART.html您的查询应类似于,
Insert into TableB (newCol)select Split_part(col1,',', Max_size_number#) from TableA;
如果我误解了您的用例,请告诉我。我可以重新尝试答案。
我认为这里的答案是列出 col1 和 Col2 的集合。
利斯塔格(Col1 ||',' ||col2, ','(
这里的诀窍是使其成为一个两步过程。在运行 listagg(( 函数之前,将 concat 插入到临时表的排序列中。
它不是一个单一的功能,但可以解决眼前的问题。