-1

我收到以下错误:

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

由于我使用FULL OUTER JOIN,business_id可能是p.business_ids.business_id,所以我没有指定使用哪一个。(我认为有些行可能只有p.business_id,而其他一些行可能只有s.business_id,我理解错了吗?)

所以我想知道business_id在上述查询中选择的正确方法是什么?谢谢!

4

2 回答 2

2

采用

coalesce(p.business_id, s.business_id) as business_id

或者

nvl(p.business_id, s.business_id) as business_id

或此答案中的 CASE 语句:https ://stackoverflow.com/a/37744071/2700344

于 2020-11-01T09:15:02.083 回答
0

business_id在查询中的两个表中都选择了 business_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

我没有检查,但你可以试试。

于 2020-11-01T03:55:40.423 回答