Описание тега set-returning-functions

Функции базы данных, возможно, возвращают более одной строки. Типичными примерами являются функции генерации серий или unnest(). Он же "табличные функции".
1 ответ

Функция с множественным значением, вызываемая в контексте, которая не может принять набор

Я получаю сообщение об ошибке: функция с множественным значением, вызываемая в контексте, которая не может принять набор при выполнении этой функции в RETURN QUERY EXECUTE линия: PLSQL $ cat lookup_email.pl CREATE OR REPLACE FUNCTION app.lookup_emai…
13 дек '16 в 01:42
1 ответ

Значения NULL теряются при наложении результата unnest()

Я наткнулся на очень странное поведение с unnest(), при приведении после расширения массива. Вступление Существует три основных варианта синтаксиса для использования unnest (): 1) SELECT unnest('{1,NULL,4}'::int[]) AS i; 2) SELECT i FROM unnest('{2,…
2 ответа

Создать таблицу из нескольких вызовов функции, возвращающей запись

У меня есть функция, которая делает некоторые базовые статистические данные по диапазону данных на основе меток времени начала и окончания: CREATE OR REPLACE FUNCTION cal(TIMESTAMP, TIMESTAMP, OUT Date_Time timestamp with time zone, OUT avg numeric,…
2 ответа

Преобразование запросов Oracle в PostgreSQL с помощью string_to_array()

У меня есть запрос ниже в Oracle: SELECT to_number(a.v_VALUE), b.v_VALUE FROM TABLE(inv_fn_splitondelimiter('12;5;25;10',';')) a JOIN TABLE(inv_fn_splitondelimiter('10;20;;', ';')) b ON a.v_idx = b.v_idx которые дают мне результат, как: Я хочу преоб…
3 ответа

Postgresql generate_series месяцев

Я пытаюсь создать серию в PostgreSQL с помощью функции generate_series. Мне нужна серия месяцев, начиная с января 2008 года до current month + 12 (год спустя). Я использую и ограничен PostgreSQL 8.3.14 (поэтому у меня нет опций временных рядов в 8.4…
2 ответа

Параллельный unnest() и порядок сортировки в PostgreSQL

Я понимаю, что с помощью SELECT unnest(ARRAY[5,3,9]) as id без ORDER BY предложение, порядок набора результатов не гарантируется. Я мог бы, например, получить: id -- 3 5 9 Но как насчет следующего запроса: SELECT unnest(ARRAY[5,3,9]) as id, unnest(A…
0 ответов

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

Я читал этот пост на днях: http://blog.heapanalytics.com/postgresqls-powerful-new-join-type-lateral/ Я подозревал, что некоторые из утверждений в посте, возможно, не были точными. Этот в частности: "Без боковых объединений нам пришлось бы прибегнуть…
1 ответ

ПРИСОЕДИНЯЙТЕСЬ к множеству возвращающих результатов функции

Я пытаюсь объединить таблицу и функцию, которая возвращает строки: SELECT p.id, p.name, f.action, f.amount FROM person p JOIN calculate_payments(p.id) f(id, action, amount) ON (f.id = p.id); Эта функция возвращает 0, 1 или более строк для каждого ид…
2 ответа

Как упорядочить результат запроса в соответствии с порядком элементов массива?

У меня есть этот запрос в Postgres 9.4: select id from question where id = any( array_cat( ARRAY[0,579489,579482,579453,561983,561990,562083]::integer[], (select array( select id from question where id not in (0,579489,579482,579453,561983,561990,56…
2 ответа

Вызывать функцию, возвращающую множество, с аргументом массива несколько раз

Это разновидность функции plpgsql, которая возвращает несколько столбцов, вызываемых несколько раз. Однако я надеялся найти решение моих конкретных обстоятельств. У меня есть функция, которая обрабатывает массив строк с заданным параметром и возвращ…
1 ответ

Использовать значения из массива JSONB внутри предложения WHERE IN

У меня есть JSONB Объект в PostgreSQL: '{"cars": ["bmw", "mercedes", "pinto"], "user_name": "ed"}' Я пытаюсь использовать значения из массива "автомобили" внутри него в WHERE пункт о SELECT: SELECT car_id FROM cars WHERE car_type IN ('bmw', 'mercede…
1 ответ

Список возврата с датами в указанном диапазоне из одного запроса

Я пытаюсь получить список дат в пределах диапазона, аналогично команде NOW() в PostgreSQL, с той лишь разницей, что now(), возвращает только текущую дату. Если я выполню это следующим образом, я получу: select now(); 2013-09-27 15:27:50.303-05 Или, …
2 ответа

Изменить диапазон дат на новые строки с дискретными датами

У меня есть таблица, которая содержит name, location, start_date, а также end_date, Я пытаюсь преобразовать эти строки, содержащие диапазоны дат, в строки отдельных дат, сохраняя при этом информацию о соответствующей строке. Пример: Name1, Location1…
2 ответа

Запись, возвращаемая из функции, имеет объединенные столбцы

У меня есть таблица, в которой хранятся изменения аккаунта с течением времени. Мне нужно объединить это с двумя другими таблицами, чтобы создать некоторые записи для определенного дня, если эти записи еще не существуют. Чтобы упростить ситуацию (я н…
1 ответ

Можно ли ответить на запросы в представлении, прежде чем полностью материализовать представление?

Короче говоря: Distinct,Min,Max на левой стороне левого соединения должны быть подотчетны без объединения. Я использую тип массива SQL (в Postgres 9.3) для сжатия нескольких строк данных в одну строку, а затем представление для возврата неопубликова…
1 ответ

generate_subscripts(array, 2) возвращает две записи, когда существует только один многомерный элемент

Почему это возвращает 2 записи, когда существует только один многомерный элемент в многомерном массиве images? SELECT images FROM ( SELECT images, generate_subscripts(images, 2) AS s FROM listings WHERE listings.id = 2 ) as foo; Примечание: я сократ…
2 ответа

Как вернуть тип строки таблицы плюс дополнительный столбец из функции?

У меня есть таблица, определенная так: create table users ( id serial primary key, name text, email text, ); ... и я хочу написать функцию, которая возвращает строки формы: ( id integer, name text, email text, some_other_column boolean, ) Мне удалос…
1 ответ

Функция для просмотра и выбора данных из нескольких таблиц

Я новичок в Postgres и имею базу данных с несколькими таблицами одинаковой структуры. Мне нужно выбрать данные из каждой таблицы, которая соответствует определенным критериям. Я мог бы сделать это с кучей UNION запросов, но количество таблиц, которы…
1 ответ

postgres: как вызвать функцию, которая возвращает таблицу и передает параметры из запроса

В качестве мгновенного примера: Функция, которая возвращает таблицу: => create or replace function testf(x integer) returns table(a integer, b integer) language sql as $function$ select * from (values(1,2)) as foo(a,b) $function$; Вызывая его, он…
2 ответа

Повторите количество строк в зависимости от значения столбца.

У меня есть таблица, которая выглядит так: | name | start_date | duration_day| ======================================== | A | 2015-01-01 | 3 | | B | 2015-01-02 | 2 | И теперь я хочу получить вывод примерно так: | name | date | ===================== …