I have this Postgres query:
SELECT i.nombre_inspectoria::varchar, p.nombre_pase::varchar, count(a.idatraso)::int from atrasos a
inner join inspectorias i on i.idinspectoria = a.idinspectoriafk
inner join tipo_pase p on p.idtipo_pase = a.idtipo_pasefk
inner join colegio c on c.idcolegio = i.idcolegiofk
inner join anio_academico an on an.idcolegiofk = c.idcolegio
where i.idcolegiofk = 1
and an.idanioacademico = 1
group by a.idinspectoriafk, i.nombre_inspectoria, p.idtipo_pase,i.idinspectoria
order by i.idinspectoria asc
And i get this output:
nombre_inspectoria | tipo_pase | count
inspectoria 1 | jornada | 5
inspectoria 1 | medico | 7
inspectoria 2 | cambio | 6
inspectoria 2 | jornada | 4
inspectoria 3 | cambio | 5
inspectoria 4 | medico | 1
But i need this output:
nombre_inspectoria | pase_jornada | pase_cambio | otros
inspectoria 1 | 5 | 0 | 7
inspectoria 2 | 4 | 6 | 0
inspectoria 3 | 0 | 5 | 0
inspectoria 4 | 0 | 0 | 5
I looked up some posts here and tried many things, right now I have:
SELECT *
FROM crosstab(
'SELECT i.nombre_inspectoria::varchar, p.nombre_pase::varchar, count(a.idatraso)::int from atrasos a
inner join inspectorias i on i.idinspectoria = a.idinspectoriafk
inner join tipo_pase p on p.idtipo_pase = a.idtipo_pasefk
inner join colegio c on c.idcolegio = i.idcolegiofk
inner join anio_academico an on an.idcolegiofk = c.idcolegio
where i.idcolegiofk = 1
and an.idanioacademico = 1
group by a.idinspectoriafk, i.nombre_inspectoria, p.idtipo_pase, i.idinspectoria
order by i.idinspectoria asc')
AS a ("nombre_inspectoria" varchar, "pase_jornada" varchar, "pase_cambio" varchar, "otros" varchar);
But i get this error:
ERROR: return and sql tuple descriptions are incompatible
What is wrong with the query?