1

我正在尝试将在 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);
4

2 回答 2

3

请查看此 URL https://docs.snowflake.net/manuals/sql-reference/sql/merge.html#matchedclause-for-updates-or-deletes

您需要按如下方式对其进行修改:当匹配且 col3 不为空时,则更新集...

于 2019-10-09T12:30:33.240 回答
0

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);
于 2019-10-09T21:19:51.313 回答