通过join或其他方式基于匹配的id在表列中填充空行

tsm1rwdh  于 2021-08-13  发布在  Java
关注(0)|答案(1)|浏览(488)

我正在vertica数据库中使用sql。
假设我有两张table:a桌和b桌。我们还假设表a是我的最终/主表,用于tableau(或类似的东西)中的数据vis,表b根据第三级表(表c)中的匹配将某些列馈送到表a中(与此对话无关)。
按原样,表a有以下列:

  1. ProgramName [varchar(50)]
  2. CustomerName [varchar(50)]
  3. Total_Cost [numeric(18,4)]

按原样,表b有以下列:

  1. CustomerCode [varchar(10)]
  2. Total_Cost [numeric(18,4)]

我想做的是更新表a的customername列,使之等于表b中的customercode,其中total\u cost\u dollars的列在表中彼此相等。
我运行这个左连接查询是为了确保,当我将表a的customername更新为等于customercode时,total cost列与我的整个数据集完全匹配。

  1. SELECT
  2. A.ProgramName,
  3. A.CustomerName,
  4. A.total_cost_dollars,
  5. B.CustomerCode,
  6. B.total_cost_dollars
  7. FROM
  8. TableA A
  9. LEFT JOIN
  10. TableB B
  11. ON
  12. B.total_cost_dollars = A.total_cost_dollars
  13. WHERE
  14. A.CustomerName IS NULL;

你知道怎么解决这个问题吗?

bhmjp9jg

bhmjp9jg1#

由于vertica支持合并查询,因此可以使用merge语句:

  1. merge into TableA A
  2. using TableB B
  3. ON (B.total_cost_dollars = A.total_cost_dollars)
  4. when matched then
  5. update
  6. set
  7. A.CustomerName = B.CustomerCode
  8. where
  9. A.CustomerName IS NULL;

相关问题