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?
 
     
     
    