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