Как вернуть два столбца с помощью функции

Я хочу вернуть 2 значения с помощью моей функции SQL:

CREATE OR REPLACE FUNCTION get_avg_prices(...)
  RETURNS table(avg_sale_price decimal, avg_rent_price decimal) 
AS
$$

SELECT 
  building_prices.avg_sale_price, 
  building_prices.avg_rent_price
FROM 
  ...

$$
  LANGUAGE sql;

Он работает, но возвращает значения в одном столбце:

Как вернуть значения в 2 отдельных столбцах?


person Kaarel Purde    schedule 14.07.2015    source источник


Ответы (1)


Табличные функции (функции, определенные как returns table или returns setof) должны использоваться в предложении from подобно таблице.

Итак, вам нужно использовать:

select * 
from get_avg_prices(...);

В список select следует помещать только скалярные функции (функции, которые возвращают только одно значение, например, число).

person a_horse_with_no_name    schedule 14.07.2015