如何在Snowflake中实现多关联更新?求Synapse存储过程转Snowflake语法
Synapse 更新语句转 Snowflake 语法
转换后的Snowflake版本代码:
UPDATE IBM.AFORCE x SET NewStatus = COALESCE(s.NewStatus, g.NewStatus, x.Status), DWHModifiedDate = CURRENT_TIMESTAMP() FROM IBM.AFORCE x LEFT JOIN ANALYTICS.CrossCheck s ON s.databasename = x.databasename AND s.currentstatus = x.Status LEFT JOIN ANALYTICS.CrossCheck g ON g.databasename = 'ReferenceDB' AND g.currentstatus = x.Status WHERE IFNULL(x.NewStatus, '') != COALESCE(s.NewStatus, g.NewStatus, x.Status);
关键转换点:
- 移除所有方括号
[]:Snowflake中常规标识符无需包裹,仅含特殊字符时才用双引号"" - 替换
ISNULL()为IFNULL():Snowflake的ISNULL()是布尔判断函数(判断值是否为NULL),而Synapse的ISNULL(a,b)等价于Snowflake的IFNULL(a,b) - 替换
GETDATE()为CURRENT_TIMESTAMP():两者都返回当前时间戳,若仅需日期部分可改用CURRENT_DATE() - 保留原JOIN逻辑与更新逻辑:Snowflake支持UPDATE语句中通过FROM子句关联多表,语法逻辑与Synapse一致
内容的提问来源于stack exchange,提问作者user15488631
相关产品推荐
相关产品推荐

