Hive SQL:运行查询,如果第一个子查询返回 0 个结果,它将返回第二个子查询的结果

Hive SQL: Running a query so that if the 1st subquery returns 0 results, it will then return the results of a 2nd subquery

提问人:Ragnar Lothbrok 提问时间:11/2/2023 更新时间:11/2/2023 访问量:18

问:

我正在尝试编写一个 Hive SQL 查询,如果第一个查询的结果为空/null,它将运行第二个查询。例如,我的第一个查询可能如下所示:

SELECT
calendar_date
, store_id
, total_inventory
FROM sales_table
WHERE calendar_date= datesub(current_date,1)

如果该查询返回 0 个结果,那么我希望它运行第二个查询来修改日期的 where 条件:

SELECT
calendar_date
, store_id
, total_inventory
FROM sales_table
WHERE calendar_date= datesub(current_date,2)

Google Bard 建议使用“with 子句”,但我永远无法让它正常工作。例如:

WITH inv_1 as (
    SELECT
    calendar_date
    , store_id
    , total_inventory
    FROM sales_table
    WHERE calendar_date= datesub(current_date,1)
), 
inv_2 as (
    SELECT
    calendar_date
    , store_id
    , total_inventory
    FROM sales_table
    WHERE calendar_date= datesub(current_date,2)
)
SELECT *
FROM inv_1
UNION ALL
SELECT *
FROM inv2
WHERE inv1 IS NULL

该查询一直工作到最后一个 where 子句。有没有办法让它工作,或者有更好的替代方案?

我看到的大多数其他建议都涉及使用 coalesce() 语句,但我认为它仅适用于 1 列,而不是整个子查询。

SQL Hive 子查询

评论


答: 暂无答案