【发布时间】:2021-10-25 02:39:21
【问题描述】:
我正在处理三个需要连接的表。这些表是“默认”、“程序”和“事务”。事务和程序需要加入,然后需要加入默认值。我不断收到此错误:
'当存在目标表时,结果中不支持重复的列名。发现重复项: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 表中的列,所以我真的不清楚重复列的来源。
任何建议将不胜感激。请让我知道是否有更多有助于包括的信息(:
【问题讨论】:
-
以下代表什么?
{{ extract.transaction.sql_source }}...如果在执行前扩展/替换,则显示扩展后的最终 SQL(也包括所有类似的表达式)。当错误涉及表/视图的列时,最好显示表/视图定义。 -
如果
with子句中的子查询是正确的,那么至少url和id存在于两个表中(重命名),因为您首先选择了* -
要排除已重命名的列,您可以在外部子查询中使用
select * except <cols_to_be_renamed>。 Check the syntax
标签: sql duplicates