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
|
Список | 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 по дате отправления: