PostgreSQL交叉表
我有一个问题:PostgreSQL交叉表,postgresql,Postgresql,我有一个问题: select '4' as "State", AVG((EXTRACT(EPOCH FROM t_processing_status.created_date - B_t_processing_status.acceptance_date))) "t_avg" FROM t_processing_status, t_processing_status AS B_
select '4' as "State",
AVG((EXTRACT(EPOCH
FROM t_processing_status.created_date - B_t_processing_status.acceptance_date))) "t_avg"
FROM t_processing_status,
t_processing_status AS B_t_processing_status
where t_processing_status.declaration_id in
(SELECT declaration_id
FROM t_declarations
WHERE submitter_reference like '%H700%') -- retrive all declaration ids
and t_processing_status.processing_status_type ='4'
AND B_t_processing_status.declaration_id=t_processing_status.declaration_id
and B_t_processing_status.acceptance_date BETWEEN '2021-03-31T04:59:33Z' AND '2021-04-07T15:11:47.907Z'
AND B_t_processing_status.acceptance_date notnull
union
select '12' as "State",
AVG((EXTRACT(EPOCH
FROM t_processing_status.created_date - B_t_processing_status.acceptance_date))) "t_avg"
FROM t_processing_status,
t_processing_status AS B_t_processing_status
where t_processing_status.declaration_id in
(SELECT declaration_id
FROM t_declarations
WHERE submitter_reference like '%H700%') -- retrive all declaration ids
and t_processing_status.processing_status_type ='12'
AND B_t_processing_status.declaration_id=t_processing_status.declaration_id
and B_t_processing_status.acceptance_date BETWEEN '2021-03-31T04:59:33Z' AND '2021-04-07T15:11:47.907Z'
AND B_t_processing_status.acceptance_date notnull
这将生成以下数据:
ID STATE T_AVG
1 4 8.6082
2 12 10.101400000000002
我想使用crosstable创建一个透视表,如下所示
4.12
8.6082 10.101400000000002
我已尝试使用以下查询:
SELECT *
FROM crosstab( 'select 1 as "ID",''4'' as "State",
AVG((EXTRACT(EPOCH
FROM t_processing_status.created_date - B_t_processing_status.acceptance_date))) as "t_Avg"
FROM t_processing_status,
t_processing_status AS B_t_processing_status
where t_processing_status.declaration_id in
(SELECT declaration_id
FROM t_declarations
WHERE submitter_reference like ''%H700%'') -- retrive all declaration ids
and t_processing_status.processing_status_type =''4''
AND B_t_processing_status.declaration_id=t_processing_status.declaration_id
and B_t_processing_status.acceptance_date BETWEEN ''2021-03-31T04:59:33Z'' AND ''2021-04-07T15:11:47.907Z''
AND B_t_processing_status.acceptance_date notnull
union
select 2 as "ID",''12'' as "State",
AVG((EXTRACT(EPOCH
FROM t_processing_status.created_date - B_t_processing_status.acceptance_date))) as "t_Avg"
FROM t_processing_status,
t_processing_status AS B_t_processing_status
where t_processing_status.declaration_id in
(SELECT declaration_id
FROM t_declarations
WHERE submitter_reference like ''%H700%'') -- retrive all declaration ids
and t_processing_status.processing_status_type =''12''
AND B_t_processing_status.declaration_id=t_processing_status.declaration_id
and B_t_processing_status.acceptance_date BETWEEN ''2021-03-31T04:59:33Z'' AND ''2021-04-07T15:11:47.907Z''
AND B_t_processing_status.acceptance_date notnull
')
AS final_result(ID Integer,State TEXT, t_Avg float8);
我认为错误是:
SQL错误[42601]:错误:返回和SQL元组描述不兼容