Re: How to unnest an array with element indexes

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: How to unnest an array with element indexes
Дата
Msg-id 13954.1392840970@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Re: How to unnest an array with element indexes  (AlexK <alkuzo@gmail.com>)
Ответы Re: How to unnest an array with element indexes  (AlexK <alkuzo@gmail.com>)
Список pgsql-sql
AlexK <alkuzo@gmail.com> writes:
> David,
> The array stores a time series of values for consecutive days. All I need is
> take an array such as ARRAY[1.1,1.2] and return to the client the following

> series_start_date + (array_index-1), array_value

> Based on what you are saying, the following should do it:

> with pivoted_array AS(
> select unnest(ARRAY[1.1,1.2])
> ),
> indexed_array AS(
> select 
>         row_number()OVER() AS element_index, 
>         unnest as element_value
> from pivoted_array)
> SELECT 
>         (DATE '2014-02-19' + INTERVAL '1d'*(element_index-1)) AS
> series_date, 
>         element_value AS series_value
> FROM indexed_array

That sure seems like the hard way, as well as uncertainly correct.
I'd use something involving generate_subscripts(), for example if
tab.arraycol is the source of the array data:

select i, arraycol[i] from tab, lateral generate_subscripts(arraycol, 1) as i;

If you're using a version of Postgres that doesn't have LATERAL, it's
a bit more complicated but you can do it with a subquery.
        regards, tom lane



В списке pgsql-sql по дате отправления:

Предыдущее
От: Pavel Stehule
Дата:
Сообщение: Re: How to unnest an array with element indexes
Следующее
От: AlexK
Дата:
Сообщение: Re: How to unnest an array with element indexes