【发布时间】:2020-07-07 15:32:37
【问题描述】:
我对 SQL 比较陌生,并且遇到了目标表未更新的问题。 我在相关列中有重复的帐户#(键)和不同的联系信息。我正在尝试将联系信息(源)合并到单行/帐号中,不重复的联系信息进入(目标)扩展列。
我构造了一个带有 case 条件的 Merge 语句来检查数据是否存在于目标表中。如果数据不在目标表中,则在扩展列中添加信息。问题是目标表没有更新。源表和目标表都定义了相似性。
**Merge SQL- reduced query**
MERGE INTO target tgt
USING (select accountno, cell, site, contact, email1 from (select w.accountno, w.cell, w.site, w.contact, email1, row_number() over (PARTITION BY w.accountno order by accountno desc) acct
from source w) inn where inn.acct =1) src
ON (tgt.accountno = src.accountno)
WHEN MATCHED
THEN
UPDATE SET
tgt.phone4 =
CASE WHEN src.cell <> tgt.cell
THEN src.cell
END,
tgt.phone5 =
CASE WHEN src.site <> tgt.site
THEN src.site
END
我已验证源表中存在应添加到目标表中的 accountno 的联系信息。我非常感谢任何关于为什么没有更新目标表的见解。 我在 Stack 上看到了类似的问题,但没有得到回复。
【问题讨论】: