将值参数化为来自另一个 table 的雪花查询

Parametrizing values to a snowflake query from another table

我正在尝试参数化更新查询,如下所示从雪花 table 读取值。

雪花查询 :

update tgtTable set @col_name = @newVal
from srcTable
where lower(@col_name) = @old_val

srcTable :

+----------+------------+------------+--------------+ 
|col_name  |modified_dt |old_val     |new_val       |
+----------+------------+------------+--------------+
|franchise |2021-02-05  |NDDA Boston |NCRT Colo     |
|acct_type |2021-04-13  |Chk         |Sav           |
|pref_lang |2021-05-25  |Eng-UK      |Eng-US        |
+----------+------------+------------+--------------+

上面 table - franchiseacct_typepref_langcol_name 的值是我的 tgtTable 的实际列尝试根据上面 Snowflake query.

srcTableold_valnew_val 进行更新

但我运行进入SQL编译错误:语法错误

有人可以帮我提供这种方法的解决方案吗?提前致谢。

您不能参数化 SQL 中的列名。您的选择是对列名和 运行 分别对每个列的 SQL 进行硬编码

update tgtTable T set T.franchise = S.new_val
from srcTable S
where S.col_name = 'franchise' and T.franchise = S.old_val;

或者,您可以编写存储过程并动态构建 SQL 语句。