Что эквивалентно postgresSQL unnest () в снежинке sql - PullRequest
0 голосов
/ 21 апреля 2020

Как мне изменить PostgresSQL в снежинке?

UNNEST(array[
    'x' || to_char(date_trunc('MONTH', max(date)), 'Mon YYYY' ,
    'y' || to_char(date_trunc('MONTH', max(date)), 'Mon YYYY')
    )])

1 Ответ

0 голосов
/ 21 апреля 2020

Вы можете использовать «flatten» для выделения значений из массива, а затем «table» для преобразования значений в таблицу:

-- Use an array for testing:
select array_construct(1, 2, 3, 4, 5);

-- Flattens into a table with metadata for each row:
select * from table(flatten(input => array_construct(1, 2, 3, 4, 5)));

--Pulls out just the values from the array:
select value::integer from table(flatten(input => array_construct(1, 2, 3, 4, 5)));

Часть "::integer" приводит значения к данным Тип вы хотите из массива. Это необязательно, но рекомендуется.

Вы можете приблизить синтаксис unnest, создав пользовательскую табличную функцию:

create or replace function UNNEST(V array)
returns table ("VALUE" variant)
language SQL
aS
$$
    select VALUE from table(flatten(input => V))
$$;

Вы бы назвали ее так:

select * from table(unnest(array_construct(1, 2, 3, 4, 5)));

Это возвращает таблицу с одним столбцом с именем VALUE типа варианта. Вы можете создать версию, которая возвращает строки, целые числа и т. Д. c.

...