仅设置级别:我正在使用SQL在Vertica数据库中工作。
假设我有两个表:表A和表B。让我们也说表A是我的最终/主表,用于Tableau中的数据可视化(或类似的东西),并且表B将某些列馈入基于表A的表中在第三张表C中的匹配项上(与该对话无关)。
原样,表A包含列:
ProgramName [varchar(50)]
CustomerName [varchar(50)]
Total_Cost [numeric(18,4)]
原样,表B包含列:
CustomerCode [varchar(10)]
Total_Cost [numeric(18,4)]
我想做的是将表A的CustomerName列更新为等于表B中的CustomerCode,其中在表中total_cost_dollars的列彼此相等。
我运行了这个左联接查询,以确保当我将表A的CustomerName更新为相等的CustomerCode时,总费用列与我的整个数据集完全/真实匹配。
SELECT
A.ProgramName,
A.CustomerName,
A.total_cost_dollars,
B.CustomerCode,
B.total_cost_dollars
FROM
TableA A
LEFT JOIN
TableB B
ON
B.total_cost_dollars = A.total_cost_dollars
WHERE
A.CustomerName IS NULL;
非常感谢任何快速帮助。
非常感谢!
嗨,
由于vertica支持合并查询,因此可以使用合并语句。
merge into TableA A
using TableB B
ON (B.total_cost_dollars = A.total_cost_dollars)
when matched then
update
set
A.CustomerName = B.CustomerCode
where
A.CustomerName IS NULL;
让我知道这是否是您所期望的。