有条件地包括在presto查询的字段中

时间:2018-03-26 21:24:55

标签: sql presto

我有一个按预期工作的presto查询:

SELECT json_format(cast(MAP(ARRAY['random_name'],
           ARRAY[
             MAP(
                ARRAY['a', 'b', 'c'],
                ARRAY[a, b, c]
            )]
) as JSON)) as metadata from a_table_with_a_b_c;  // a,b,c are all ints

现在我只想在大于0时包含a,b,c,如何更改查询?我可以添加' CASE WHEN'但似乎我会有' a:null'而不是没有它。

1 个答案:

答案 0 :(得分:0)

你可以试试这个:

with rows as ( select row_number() over() as row_id, ARRAY['a', 'b', 'c'] as keys, ARRAY[a, b, c] as vals from a_table_with_a_b_c ) select json_format(cast(MAP(ARRAY['random_name'], ARRAY[ MAP( array_agg(key), array_agg(value) )] ) as JSON)) as metadata from rows cross join unnest (keys, vals) as t (key, value) where value is not null and value > 0 group by row_id;