Я получаю эту ошибку, но типы совпадают, как я проверял с помощью pg_typeof для столбцов. Они вернули текст и bigint.
ERROR: return and sql tuple descriptions are incompatible
SQL state: 42601
Вот определение таблицы испытаний
create table reader_event
(
reader_event_id serial,
reader_name text,
event_type varchar(25),
event_date timestamp,
metric_key text,
metric_value bigint
)
А вот и вставки
insert into reader_event(reader_name, event_type, event_date, metric_key, metric_value)
values('t', 'insert', now(), 'followers', 10),
('t', 'upate', now()+ interval '1' day, 'followers', 20),
-- Add New Metric
('t', 'insert', now(), 'subscribers', 10000),
('t', 'update', now()+ interval '2' day, 'followers', 9999),
('t', 'update', now()+ interval '3' day, 'subscribers', 17),
-- Add new metric
('t', 'insert', now(), 'reads', 9999);
insert into reader_event(reader_name, event_type, event_date, metric_key, metric_value)
values('a', 'insert', now(), 'followers', 10),
('a', 'upate', now(), 'followers', 20),
('a', 'upate', now()+ interval '1' day, 'followers', 230);
И запрос, который возвращает ошибку. Я ищу в Google и StackOverflow, и я в тупике.
// Show new current events.
select * from crosstab(
'select b.reader_name, b.metric_key, a.metric_value
from
(select max(reader_event_id) as reader_event_id
, reader_name
, metric_key
, max(event_date) as event_date
from reader_event
group by reader_name,metric_key
order by 2, 3, 4
) b
inner join reader_event a
on a.reader_event_id = b.reader_event_id
order by 1,2'
) AS (reader_name text,metric_key text,metric_value bigint)
Есть идеи, почему я получаю ошибку?
Спасибо.