Redshift:如何将同一行上的两列插入到辅助表中的单个列中



我有包含两列col1col2TableA。我想查询col1col2中的所有结果,并将它们插入到新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 插入到临时表的排序列中。

它不是一个单一的功能,但可以解决眼前的问题。

相关内容

最新更新