SQL:CROSS JOIN UNNEST 并在 CROSS JOIN UNNEST 列中包含具有 NULL 的行的数据

问题描述 投票:0回答:1

我正在以下 SQL 查询中寻求帮助,其中列 policy_array 在某些行中具有 NULL 值,但在其他行中具有策略数据数组。即使输出中的policy_array 为NULL,我也希望能够包含行中的数据。

当我执行下面的查询时,它会按预期执行 CROSS JOIN UNNEST,但也会按预期删除policy_array 列中带有 NULL 的列中的所有数据。我可以想象通过建立一个中间表来解决这个问题,其中policy_array 中的 NULL 被更改为其他内容,但我真的不想这样做。

 SELECT 
    policy,
    account_id,
    rejects,
    overturns,
    appeals,
    submits
FROM relevant_table
CROSS JOIN UNNEST(policy_array) AS p (policy)
WHERE
    ...
sql presto trino cross-join unnest
1个回答
1
投票

有两个选项

LEFT JOIN
on true
:

FROM relevant_table
LEFT JOIN UNNEST(policy_array) AS p (policy) ON true

或者更黑客一点,它使用

unnest
支持多个数组这一事实 - 添加带有一个元素的数组(另请注意交叉连接取消嵌套的简洁语法):

FROM relevant_table, 
    UNNEST(policy_array, array[1]) AS p (policy, ignored)
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.