首页 > 解决方案 > 双左连接中的重复列 - bigquery sql

问题描述

我正在处理三个需要连接的表。这些表是“默认”、“程序”和“事务”。事务和程序需要加入,然后需要加入默认值。我不断收到此错误:

'当存在目标表时,不支持结果中的重复列名。发现重复项:url、id、idNetwork、type、updated'。

这是我试图运行的代码:

with renamed_b as (
    select *, url as b_url, id as b_id, idNetwork as b_idNetwork, type as b_type, updated as b_updated from `{{ extract.program.sql_source }}`
), renamed_a as (
    select *, url as a_url from `{{ extract.default.sql_source }}`
) 
select * from renamed_a a
  left join renamed_b b
    on a.commission_transaction_id = b.id
  left join `{{ extract.transaction.sql_source }}` d
    on d.idProgram = b.id 

id、idNetwork、type 和 updated 不会出现在默认表中,并且我已经重命名了 program 表中的列,所以我真的不清楚重复列的来源。

任何建议将不胜感激。请让我知道是否有更多信息有助于包括(:

标签: sqlduplicates

解决方案


尝试显式选择所需的所有列,而不是使用*.

当你select *, url as b_url [..]发生的事情是会有一个urlb_url列(意味着你的两个 CTE 都包含一个名为url! 的列),因此会出现重复列错误。


推荐阅读