通过联接或其他方式基于匹配的ID填充表列中的空行

问题描述 投票:0回答:1

仅设置级别:我正在使用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;

非常感谢任何快速帮助。

非常感谢!

sql join sql-update vertica
1个回答
0
投票

嗨,

由于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;

让我知道这是否是您所期望的。

© www.soinside.com 2019 - 2024. All rights reserved.