El 2 de julio de 2010 09:07, Cesar A <cesar.carbon...@gmail.com> escribió:

> Bueno... luego de revisar y hacer varias pruebas, algo me salió.
>
> Revisando el último ejemplo de la doc[0], hice mi prueba:
>
> SELECT * FROM public.crosstab
> (
>     'SELECT est_002, agri02_002, count(*)::numeric FROM consulta_agri04
> GROUP BY agri02_002, est_002 ORDER BY est_002, agri02_002',
>     'SELECT DISTINCT agri02_002 FROM consulta_agri04 ORDER BY agri02_002'
> ) AS lista(estado text, renglon1 text, renglon2 text, renglon3 text,
> renglon4 text, renglon5 text, renglon6 text, renglon7 text, renglon8 text);
>
> de la que obtuve:
>
> estado  | renglon1 | renglon2 | renglon3 | renglon4 | renglon5 | renglon6 |
> renglon7 | renglon8
>
> ----------+----------+----------+----------+----------+----------+----------+----------+----------
>  Mérida   | 83       | 169      | 68       | 421      | 746      | 1277
> | 41       | 484
>  Táchira  | 12       | 29       | 1        | 310      | 209      | 451
>  |          | 222
>  Trujillo |          | 26       | 20       | 97       | 174      | 361
>  |          | 127
> (3 filas)
>
> Según en el ejemplo, la definición de las columnas ya se conoce, pero y sí
> quisiéramos que los títulos de las columnas fueran parte de la bondad del
> crosstab? ya ven  que mi:
>
> SELECT DISTINCT agri02_002 FROM consulta_agri04 ORDER BY agri02_002;
>        agri02_002
> ------------------------
>  CACAO
>  CAFE
>  CAÑA
>  CEREALES Y LEGUMINOSAS
>  FRUTALES
>  HORTALIZAS
>  ORNAMENTALES
>  RAICES Y TUBERCULOS
> (8 filas)
>
>
>
Solo que definas las columnas con los títulos de los valores que devuelve la
consulta de arriba.

SELECT * FROM public.crosstab
(
    'SELECT est_002, agri02_002, count(*)::numeric FROM consulta_agri04
GROUP BY agri02_002, est_002 ORDER BY est_002, agri02_002',
    'SELECT DISTINCT agri02_002 FROM consulta_agri04 ORDER BY agri02_002'
) AS lista(estado text, cacao text, cafe text, "caña" text, "cereales y
leguminosas" text, frutales text, hortalizas text, ornamentales text,
"raices y tuberculos" text);

Responder a