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元组描述不兼容