SQL Snowflake - 将 SQL 列表/数组放入列中

SQL Snowflake - Put an SQL list / array into a column

基于特定的项目架构,我有一个 LIST ('Bob', 'Alice'),我想 SELECT 作为一个列(然后进行特定的 JOIN)。

现在,我做到了:

SELECT *
FROM TABLE(flatten(input => ('Bob', 'Alice'))) as v1

但这导致了一行/两列,我需要一列/两行(以进行 JOIN)。

如果我使用也一样:

select * from (values ('Bob', 'Alice'))

基本思路是 PIVOT,但是,列表可能具有任意长度,因此我无法手动列出 PIVOT 查询中的所有列名...

我也不能使用以下(这会起作用):

select * from (values ('Bob'), ('Alice'))

因为我将列表作为字符串继承,无法动态修改它。

如果输入以 ('Bob','Alice') 形式提供,则可以使用 STRTOK_SPLIT_TO_TABLE

SELECT table1.value 
FROM table(strtok_split_to_table($$('Bob','Alice')$$, '(),''')) AS table1;

输出:

如果您有一组固定的值想要加入,并且查看其中的一些 SQL 您已尝试使用 VALUES 的正确形式是:

select * from (values ('Bob'), ('Alice'));

select * from values ('Bob'), ('Alice');

如果你有一个存在的数组,你可以像第一个例子那样展平它

SELECT v1.value::text
FROM TABLE(flatten(input => array_construct('Bob', 'Alice'))) as v1;
V1.VALUE::TEXT
Bob
Alice

或者如果您有一个字符串“Bob, Alice”,那么 SPLIT_TO_TABLE

SELECT trim(v1.value)
FROM TABLE(split_to_table('Bob, Alice', ',')) as v1;