Hola Diego.

Nop, lo uno, ni lo otro:

SELECT * FROM public.crosstab('SELECT est_002, agri02_002, count(*)::text
FROM consulta_agri04 GROUP BY agri02_002, est_002 ORDER BY est_002,
agri02_002') AS lista("estado" text, "renglon" text, "cantidad" text);
ERROR:  invalid return type
DETAIL:  SQL rowid datatype does not match return rowid datatype.

SELECT * FROM public.crosstab('SELECT est_002, agri02_002, count(*) FROM
consulta_agri04 GROUP BY agri02_002, est_002 ORDER BY est_002, agri02_002')
AS lista("estado" text, "renglon" text, "cantidad" numeric);
ERROR:  invalid return type
DETAIL:  SQL rowid datatype does not match return rowid datatype.


Me da la impresión que tiene que ver con la cantidad de columnas devueltas y
las definidas, pero, justo lo que me interesa es "pivotear" la consulta
original, donde me quede la primera columna los estados, y el resto los
renglones


El 1 de julio de 2010 12:14, Diego Ayala <netdieg...@gmail.com> escribió:

> deberias castear el count(*), ya que en la ultima parte estas definiendo
> cantidad de tipo text, puedes hacer count(*)::text, y deberia de funcionar..
>
> El 1 de julio de 2010 12:39, Cesar A <cesar.carbon...@gmail.com> escribió:
>
> Saludos
>>
>> Disculpen ustedes, pero no doy pie con bola en una consulta a crosstab:
>>
>> Normalita:
>>
>> SELECT est_002, agri02_002, count(*) FROM consulta_agri04 GROUP BY
>> agri02_002, est_002 ORDER BY est_002, agri02_002; est_002  |
>> agri02_002       | count
>> ----------+------------------------+-------
>>  Mérida   | CACAO                  |    83
>>  Mérida   | CAFE                   |   169
>>  Mérida   | CAÑA                   |    68
>>  Mérida   | CEREALES Y LEGUMINOSAS |   421
>>  Mérida   | FRUTALES               |   746
>>  Mérida   | HORTALIZAS             |  1277
>>  Mérida   | ORNAMENTALES           |    41
>>  Mérida   | RAICES Y TUBERCULOS    |   484
>>  Táchira  | CACAO                  |    12
>>  Táchira  | CAFE                   |    29
>>  Táchira  | CAÑA                   |     1
>>  Táchira  | CEREALES Y LEGUMINOSAS |   310
>>  Táchira  | FRUTALES               |   209
>>  Táchira  | HORTALIZAS             |   451
>>  Táchira  | RAICES Y TUBERCULOS    |   222
>>  Trujillo | CAFE                   |    26
>>  Trujillo | CAÑA                   |    20
>>  Trujillo | CEREALES Y LEGUMINOSAS |    97
>>  Trujillo | FRUTALES               |   174
>>  Trujillo | HORTALIZAS             |   361
>>  Trujillo | RAICES Y TUBERCULOS    |   127
>> (21 filas)
>>
>>
>> Con crosstab:
>>
>> SELECT * FROM public.crosstab('SELECT est_002, agri02_002, count(*) FROM
>> consulta_agri04 GROUP BY agri02_002, est_002 ORDER BY est_002, agri02_002')
>> AS lista("estado" text, "renglon" text, "cantidad" text);
>> ERROR:  invalid return type
>> DETAIL:  SQL rowid datatype does not match return rowid datatype.
>>
>>
>> Creo que tengo dudas conceptuales... Cómo es la cosa?
>>
>> Gracias
>>
>> --
>> --
>> Sí no eres parte de la solución... eres parte del problema.
>> Les Luthiers
>> --
>> Cesar A. Carbonara R.
>> C.I. Nº V.11.952.572
>> --
>> Usuario Linux 377997
>> www.gulmer.org.ve
>> Debian... todo lo que siempre has querido
>>
>
>
>
> --
> Diego Ayala
>



-- 
--
Sí no eres parte de la solución... eres parte del problema.
Les Luthiers
-- 
Cesar A. Carbonara R.
C.I. Nº V.11.952.572
--
Usuario Linux 377997
www.gulmer.org.ve
Debian... todo lo que siempre has querido

Responder a