подзапрос postgres с производным столбцом - PullRequest
0 голосов
/ 10 июня 2010

Следующий запрос не будет работать, но должно быть ясно, что я пытаюсь сделать: разделить значение 't' на пробел и использовать последний элемент в этом массиве в подзапросе (так как он будет соответствовать tl).Есть идеи, как это сделать?Спасибо!

SELECT t, y, "type",
regexp_split_to_array(t, ' ') as t_array, sum(dr), (

select uz from f.tfa where tl = t_array[-1]

)
as uz,
sc
FROM padres.yd_fld
WHERE y = 2010 AND pos <> 0
GROUP BY t, y, "type", sc;

1 Ответ

0 голосов
/ 10 июня 2010

Не думаю, что вы можете использовать отрицательный индекс для ссылки на элемент массива в postgresql (документация)?

test=# select t from 
      (select regexp_split_to_array('hi man bye', ' ') as t) as x;       
--------------
 {hi,man,bye}
(1 row)

test=# select t[1] from 
      (select regexp_split_to_array('hi man bye', ' ') as t) as x;
 t
----
 hi
(1 row)

test=# select t[-1] from 
      (select regexp_split_to_array('hi man bye', ' ') as t) as x;
 t
---

(1 row)

Я нахожу странным, что это не выдает ошибку, хотя ...

Правильный путь будет:

test=# select t[array_length(t,1)] from 
  (select regexp_split_to_array('hi man bye', ' ') as t) as x;
  t
-----
 bye

Также смотрите здесь:

Получение последнего слова из строки Postgres, декларативно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...