我试图在更新查询中使用3个表进行内部联接。我试图在多个站点找到解决方案,但没有得到解决方案。
我正在尝试查询示例:
UPDATE TGT
SET C1 = CASE WHEN TGT.c2 = SRC.c2 AND SRC.C3 = 'P' THEN SRC.C1 ELSE NULL END,
C2 = CASE WHEN TGT.c2 = SRC.c2 AND SRC.C3 = 'D' THEN SRC.C1 ELSE NULL END
FROM SRC
INNER JOIN SRC1
ON SRC.C9 = SRC1.C9
AND SRC.C9 = TGT.C9;
先谢谢!!
答案 0 :(得分:1)
我希望您的语法能够正常工作。 (我没有方便的Vertica,但它的查询解析器基于Postgres。)
或许 - 与Postgres不同 - JOIN
中不允许FROM
。然后,您可以将连接条件放在WHERE
子句中:
UPDATE TGT
SET C1 = (CASE WHEN TGT.c2 = SRC.c2 AND SRC.C3 = 'P' THEN SRC.C1 END)
C2 = (CASE WHEN TGT.c2 = SRC.c2 AND SRC.C3 = 'D' THEN SRC.C1 END)
FROM SRC, SRC1
WHERE SRC.C9 = SRC1.C9 AND SRC.C9 = TGT.C9;