如何将变量设置为值列表?

问题描述 投票:0回答:1

我想在 Snowflake 中定义一个变量,其中包含一个值列表,这样我就可以在不同的 SQL 中重用这个变量。

这是用例

set account_list = 'ID1, ID2, ID3';

我想从账户表和其他各种表中选择这3个账户

此查询正确返回 3 条记录

select * from ACCOUNT where ACCOUNT_ID in (ID1, ID2, ID3);

下面的查询都不会返回任何匹配的记录。

select * from ACCOUNT where ACCOUNT_ID in ($account_list); 

select * from ACCOUNT where ACCOUNT_ID in (select $account_list); 

以前有人尝试过做同样的事情吗?你是否找到了让它发挥作用的方法?谢谢

sql variables set snowflake-cloud-data-platform
1个回答
0
投票

您可以使用 flatten 函数将变量列表转换为单列表,并可以在查询中使用变量值。

示例:首先,将变量值存储为 JSON 数组的字符串表示形式

设置变量1 = '[值1,值2]';

接下来,使用展平表格功能将变量列表转换为单列表。关键字“value”是 flatten 函数返回的列的名称。然后,您可以使用子查询将新表中的值返回到“where in ()”语句。

从中选择 * 其中(从表中选择值(展平(输入=> parse_json($variable1))));

© www.soinside.com 2019 - 2024. All rights reserved.