Snowflake中如何将引用变量作为列名的一部分进行使用?
Snowflake中如何将引用变量作为列名的一部分进行使用?
嗨,我来帮你搞定这个问题~你现在遇到的“Invalid Identifier”错误,是因为Snowflake没办法直接识别你那种把变量嵌入列名的写法。要把变量作为列名的一部分来引用,得用Snowflake专门的标识符转换函数才行。
你可以试试下面的写法:
set macro = 'Aut_24'; Select * from my_data1 a left join mydata2 b on a.id = b.id where CAST(b.IDENTIFIER('Column_name_' || $macro) AS DECIMAL(15,2)) >= 50
这里的关键是用IDENTIFIER()函数,它能把拼接出来的字符串转换成Snowflake认可的合法列名。具体来说,'Column_name_' || $macro会把你定义的变量Aut_24和固定前缀拼接成完整的列名字符串Column_name_Aut_24,再通过IDENTIFIER()转成列名,配合表别名b就能正确引用到目标列了。
如果你的场景更复杂,比如需要动态生成整个SQL语句,也可以考虑用动态SQL(比如结合存储过程),但这个简单场景下用IDENTIFIER()就足够啦。
备注:内容来源于stack exchange,提问作者MLPNPC
相关产品推荐
相关产品推荐

