首页 > 解决方案 > 通过比较源表和目标表来合并目标表

问题描述

我们是否在 oracle 中都提供了匹配的源表和目标表

我有三个条件:

  1. 当源和目标匹配然后根据条件更新
  2. 当源中的新数据不在目标中时,然后添加记录。
  3. 当数据不在源中但在目标中时。然后更新目标表中的标志。

请注意:源表每天都会刷新。

我可以在合并中执行第 1 步和第 2 步,如下所示

merge into target as t using Source as S
      On t.pk1 = s.pk1 and t1.pk2 = s.pk2
when matched and t.normalKey <> s.NormalKey --Step 1
    then update t.normalKey = s.NormalKey
when not matched 
    then insert (t.field) values (s.field) --Step 2
Step 3-- ?

在 sql server 中有一种处理方法。如下所示,我试图找出在 Snowflake 中使用“By”子句的相同方式。

下面是我们在 sqlserver 中做的例子。

MERGE <target_table> [AS TARGET]
USING <table_source> [AS SOURCE]
ON <search_condition>
[WHEN MATCHED 
   THEN <merge_matched> ]
[WHEN NOT MATCHED [BY TARGET]
   THEN <merge_not_matched> ]
[WHEN NOT MATCHED BY SOURCE
   THEN <merge_matched> ];

我的最终解决方案是使用另一个合并/更新语句。首先合并以处理步骤 1 和 2。

和另一个更新只是为了处理第 3 步。

还是我们有更好的方法。

标签: oraclesnowflake-cloud-data-platform

解决方案


推荐阅读