我正在尝试将在Oracle中运行的合并函数转换为与Snowflake兼容。使用合并时,它会限制我在 where 子句上。如果有人可以提供帮助,请告诉我。
错误消息:图像
我正在使用具有以下条件的合并逻辑,它会将错误抛出意外的where子句。(下面用粗体突出显示(
merge into INV_bas_SAP_ZIBP_SUPPLY b using inv_stg_dev.INV_stg_SAP_ZIBP_SUPPLY s
on s.SCHEDULE_LINE_DATE = b.SCHEDULE_LINE_DATE
when matched then
update set b.col1 = s.col1, b.col2 = s.col2
where col3=not null
when not matched then
insert (col1, col2) values (s.col1, s.col2);
请查看此 URL https://docs.snowflake.net/manuals/sql-reference/sql/merge.html#matchedclause-for-updates-or-deletes
您需要按如下方式修改它: 当匹配且 col3 不为空时,则更新集...
MATCHED 语句中的WHERE条件应写为:
merge into INV_bas_SAP_ZIBP_SUPPLY b using inv_stg_dev.INV_stg_SAP_ZIBP_SUPPLY s
on s.SCHEDULE_LINE_DATE = b.SCHEDULE_LINE_DATE
when matched and col3=not null then
update set b.col1 = s.col1, b.col2 = s.col2
when not matched then
insert (col1, col2) values (s.col1, s.col2);