雪花中的合并功能限制

时间:2019-10-09 09:27:15

标签: sql snowflake-data-warehouse snowsql

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

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分: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);