Sql 配置单元查询:如何为“完全外部联接”选择“联接键”?
我得到了以下错误:Sql 配置单元查询:如何为“完全外部联接”选择“联接键”?,sql,join,hive,hiveql,Sql,Join,Hive,Hiveql,我得到了以下错误: Multiple attributes named business_id in reportAttributeReferenceAmbiguous; p.business_id, s.business_id 从SPARK/HIVE查询: SELECT business_id, p.p1, p.p2, s.s1, s.s2 FROM p_table p FULL OUTER JOIN s_table s ON p.busine
Multiple attributes named business_id in reportAttributeReferenceAmbiguous; p.business_id, s.business_id
从SPARK/HIVE查询:
SELECT
business_id,
p.p1,
p.p2,
s.s1,
s.s2
FROM p_table p
FULL OUTER JOIN s_table s
ON p.business_id = s.business_id
因为我使用的是完全外部联接,business\u id可以是p.business\u id或s.business\u id,所以我没有指定要使用哪一个。我想有些行可能只有p.business\u id,而有些行可能只有s.business\u id,我理解错了吗
所以我想知道在上面的查询中选择business\u id的正确方法是什么?谢谢 两个表中都有business\u id。在查询中,您选择了business\u id,但没有提到来自哪个表
SELECT
business_id,
p.p1,
p.p2,
s.s1,
s.s2
FROM p_table p
FULL OUTER JOIN s_table s
ON p.business_id = s.business_id
上述查询应更改为
SELECT
p.business_id AS pBI, s.business_id AS sBI,
p.p1,
p.p2,
s.s1,
s.s2
FROM p_table p
FULL OUTER JOIN s_table s
ON p.business_id = s.business_id
我没有检查,但您可以试试。使用
coalesce(p.business_id, s.business_id) as business_id
或
或者像下面回答中这样的CASE语句:连接的结果包括两个表中的所有列。您可能需要使用coalescap.business\u id,s.business\u id
nvl(p.business_id, s.business_id) as business_id