Google bigquery 尝试联合包含联接操作的2个子查询时,BigQuery联合失败

Google bigquery 尝试联合包含联接操作的2个子查询时,BigQuery联合失败,google-bigquery,Google Bigquery,我们正在尝试合并2个子查询,并得到错误。 以下是查询: select * from (select TRANS_SEQ, TRANS_TS from [X.ls_transaction] ls left join each (select * from [X.resident_s] where date(eff_end_ts) = date('9999-12-31')) rs on ls.source_resident_key=rs.resident_key where date(trans_

我们正在尝试合并2个子查询,并得到错误。 以下是查询:

select *
from
(select  TRANS_SEQ, TRANS_TS
from [X.ls_transaction] ls
left join each (select * from [X.resident_s] where date(eff_end_ts) = date('9999-12-31')) rs on ls.source_resident_key=rs.resident_key
where date(trans_ts) = date('2015-07-31')) a,
(select TRANS_SEQ, TRANS_TS,
from [X.ld_transaction] ld
left join each (select * from [X.resident_d] where date(eff_end_ts) = date('9999-12-31')) rs on ld.source_resident_key=rs.resident_key
where date(trans_ts) = date('2015-07-31')) b
limit 1;
下面是它返回的错误:

错误:联合导致架构不明确。[TRANS_SEQ]不明确且 正在对多个字段使用别名。别名字段: ld.TRANSU SEQ,ls.TRANSU SEQ

如果我从子查询中取出两个联接,则该并集可以工作。
这是虫子吗


谢谢

很可能在X.resident\u d和X.resident\u s中有TRANS\u SEQ字段,这会引入歧义。
你应该像下面这样做

select *
from
(select ls.TRANS_SEQ as TRANS_SEQ, TRANS_TS
from [X.ls_transaction] ls
left join each (select * from [X.resident_s] where date(eff_end_ts) = date('9999-12-31')) rs on ls.source_resident_key=rs.resident_key
where date(trans_ts) = date('2015-07-31')) a,
(select ld.TRANS_SEQ as TRANS_SEQ, TRANS_TS,
from [X.ld_transaction] ld
left join each (select * from [X.resident_d] where date(eff_end_ts) = date('9999-12-31')) rs on ld.source_resident_key=rs.resident_key
where date(trans_ts) = date('2015-07-31')) b
limit 1;

尝试为两个“TRANS_SEQ”变量中的第二个变量指定不同的名称,并使用coalesce函数。下面是我解决这个问题的方法:

select coalesce (TRANS_SEQ, TRANS_SEQ_b)
from
(select  TRANS_SEQ, TRANS_TS
from [X.ls_transaction] ls
left join each (select * from [X.resident_s] where date(eff_end_ts) = date('9999-12-31')) rs on ls.source_resident_key=rs.resident_key
where date(trans_ts) = date('2015-07-31')) a,
(select TRANS_SEQ as TRANS_SEQ_b , TRANS_TS,
from [X.ld_transaction] ld
left join each (select * from [X.resident_d] where date(eff_end_ts) = date('9999-12-31')) rs on ld.source_resident_key=rs.resident_key
where date(trans_ts) = date('2015-07-31')) b
limit 1;

我已经对它进行了测试,它很有效。

重要的是,你可以使用投票下方张贴答案左侧的勾号来标记接受答案。看看为什么它很重要