我正在尝试将在Oracle中运行的合并功能转换为与Snowflake兼容。使用合并时,它限制了我在where子句中。请让我知道是否有人可以帮忙。
错误消息:Image
我在以下条件下使用合并逻辑,它在意外情况下将错误作为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);
答案 0 :(得分:3)
请查看此网址https://docs.snowflake.net/manuals/sql-reference/sql/merge.html#matchedclause-for-updates-or-deletes
您将需要对其进行如下修改: 当匹配且col3不为null时,则更新集...
答案 1 :(得分:0)
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);