Re: crosstab: ERROR: invalid return type

Lists: pgsql-es-ayuda
From: Cesar A <cesar(dot)carbonara(at)gmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: crosstab: ERROR: invalid return type
Date: 2010-07-01 16:39:07
Message-ID: AANLkTikE56FIFnqvc1KI674mrwiDnl6n0YcRwEeLh0d1@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

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


From: Diego Ayala <netdiego81(at)gmail(dot)com>
To: Cesar A <cesar(dot)carbonara(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: crosstab: ERROR: invalid return type
Date: 2010-07-01 16:44:19
Message-ID: AANLkTilIGx6AocjU0nsC6BvTB20Ad-LduQIJQl7ASsDl@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

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(dot)carbonara(at)gmail(dot)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


From: Cesar A <cesar(dot)carbonara(at)gmail(dot)com>
To: Diego Ayala <netdiego81(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: crosstab: ERROR: invalid return type
Date: 2010-07-01 16:49:06
Message-ID: AANLkTimhprxVCjMELc5QhAwa279ek_PId5GacHnpukHO@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

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 <netdiego81(at)gmail(dot)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(dot)carbonara(at)gmail(dot)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


From: Diego Ayala <netdiego81(at)gmail(dot)com>
To: Cesar A <cesar(dot)carbonara(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: crosstab: ERROR: invalid return type
Date: 2010-07-01 17:02:03
Message-ID: AANLkTikIwuKe37X9Gi0MIln7zDlGzzDLHcunidAfeC7a@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Entiendo, podrias probar sin ponerle las comillas doblesa la definiciones de
los parametros

AS lista(estado text, renglon text, cantidad text);

El 1 de julio de 2010 12:49, Cesar A <cesar(dot)carbonara(at)gmail(dot)com> escribió:

> 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 <netdiego81(at)gmail(dot)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(dot)carbonara(at)gmail(dot)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
>

--
Diego Ayala


From: Cesar A <cesar(dot)carbonara(at)gmail(dot)com>
To: Diego Ayala <netdiego81(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: crosstab: ERROR: invalid return type
Date: 2010-07-01 17:34:11
Message-ID: AANLkTiklgxnrMAKioqMK9bFlo1olO40mUQ0P9xP8EIgg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

No, nada.

Por si hay dudas con el resultado deseado:

est_002 |CACAO |CAFE |CAÑA
Mérida |83 |169 |68
Táchira |12 |29 |1
Trujillo | |26 |20

Y las demás columnas, correspondientes a cada renglón...

El 1 de julio de 2010 12:32, Diego Ayala <netdiego81(at)gmail(dot)com> escribió:

> Entiendo, podrias probar sin ponerle las comillas doblesa la definiciones
> de los parametros
>
>
> AS lista(estado text, renglon text, cantidad text);
>
> El 1 de julio de 2010 12:49, Cesar A <cesar(dot)carbonara(at)gmail(dot)com> escribió:
>
> 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 <netdiego81(at)gmail(dot)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(dot)carbonara(at)gmail(dot)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
>>
>
>
>
> --
> 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


From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Cesar A <cesar(dot)carbonara(at)gmail(dot)com>
Cc: pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: crosstab: ERROR: invalid return type
Date: 2010-07-01 22:39:49
Message-ID: 1278023857-sup-12@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Excerpts from Cesar A's message of jue jul 01 12:39:07 -0400 2010:

> SELECT est_002, agri02_002, count(*) FROM consulta_agri04 GROUP BY
> agri02_002, est_002 ORDER BY est_002, agri02_002; est_002 |

> 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.

Hmm, ¿no será que los tipos de la tabla son varchar en vez de text? No
tengo mucha experiencia con crosstab pero eso suena plausible.

¿Qué versión de Postgres estás usando?


From: Cesar A <cesar(dot)carbonara(at)gmail(dot)com>
To: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
Cc: pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: crosstab: ERROR: invalid return type
Date: 2010-07-02 03:33:30
Message-ID: AANLkTik6mekUBRW_tlnh-h13l1EpwmNfhYhei6iOjqMl@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Creo entender que al definir el campo como, por ejemplo, "estado" text le
estoy diciendo que lo "convierta" a text, de hecho, el count creo que
devuelve numeric... cierto?

Sin embargo, probando, porque en efecto los 2 primeros campos son varchar:

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" varchar, "renglon" varchar, "cantidad" numeric);
ERROR: return and sql tuple descriptions are incompatible

La versión es 8.3

2010/7/2 Alvaro Herrera <alvherre(at)commandprompt(dot)com>

> Excerpts from Cesar A's message of jue jul 01 12:39:07 -0400 2010:
>
> > SELECT est_002, agri02_002, count(*) FROM consulta_agri04 GROUP BY
> > agri02_002, est_002 ORDER BY est_002, agri02_002; est_002 |
>
> > 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.
>
> Hmm, ¿no será que los tipos de la tabla son varchar en vez de text? No
> tengo mucha experiencia con crosstab pero eso suena plausible.
>
> ¿Qué versión de Postgres estás usando?
>

--
--
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


From: Cesar A <cesar(dot)carbonara(at)gmail(dot)com>
To: gilberto(dot)castillo(at)etecsa(dot)cu
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: crosstab: ERROR: invalid return type
Date: 2010-07-02 03:34:37
Message-ID: AANLkTil6yZiVzyafIs3ldSXtunqNKt7hvN-U0VWO9KQX@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

así da un error de sintaxis

El 2 de julio de 2010 13:26, Gilberto Castillo Martínez <
gilberto(dot)castillo(at)etecsa(dot)cu> escribió:

>
>
> El jue, 01-07-2010 a las 13:04 -0430, Cesar A escribió:
> > No, nada.
> >
> >
> > Por si hay dudas con el resultado deseado:
> >
> >
> > est_002 |CACAO |CAFE |CAÑA
> > Mérida |83 |169 |68
> > Táchira |12 |29 |1
> > Trujillo | |26 |20
>
> >
> >
> >
> > AS lista(estado text, renglon text, cantidad text);
>
>
> Disculpe, si me perdí algo y ya lo probaron .... si los resultados van a
> ser convertidos en texto
>
> AS lista(estado::text, renglon::text, cantidad::text);
>
> >
> --
> Saludos,
>
> Tip: El progreso es nuestra independencia tecnológica.
>
> “Trabajamos por una empresa mejor”
>
> _______________________________________________________
>
> Msc. Ing. Gilberto Castillo.
> Presidencia. ETECSA.
> Teléfono: 266-8558 Fax (537) 207-8931.
> Edificio Beijing, 5to piso oficina 526. MTC.
> Miramar, La Habana, Cuba.
> _______________________________________________________
>
> ---
> This message was processed by Kaspersky Mail Gateway 5.6.28/RELEASE running
> at host imx2.etecsa.cu
> Visit our web-site: <http://www.kaspersky.com>, <http://www.viruslist.com>
>
>

--
--
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


From: Diego Ayala <netdiego81(at)gmail(dot)com>
To: Cesar A <cesar(dot)carbonara(at)gmail(dot)com>
Cc: gilberto(dot)castillo(at)etecsa(dot)cu, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: crosstab: ERROR: invalid return type
Date: 2010-07-02 11:29:12
Message-ID: AANLkTilW3x-m7Pbyk48JSYEHA41Ov6q_HdSA8KNS16z8@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

El 1 de julio de 2010 23:34, Cesar A <cesar(dot)carbonara(at)gmail(dot)com> escribió:

> así da un error de sintaxis
>
> El 2 de julio de 2010 13:26, Gilberto Castillo Martínez <
> gilberto(dot)castillo(at)etecsa(dot)cu> escribió:
>
>>
>>
>> El jue, 01-07-2010 a las 13:04 -0430, Cesar A escribió:
>>
>> > No, nada.
>> >
>> >
>> > Por si hay dudas con el resultado deseado:
>> >
>> >
>> > est_002 |CACAO |CAFE |CAÑA
>> > Mérida |83 |169 |68
>> > Táchira |12 |29 |1
>> > Trujillo | |26 |20
>>
>> >
>> >
>> >
>> > AS lista(estado text, renglon text, cantidad text);
>>
>>
>> Disculpe, si me perdí algo y ya lo probaron .... si los resultados van a
>> ser convertidos en texto
>>
>>
>> AS lista(estado::text, renglon::text, cantidad::text);
>>
>> >
>> --
>> Saludos,
>>
>> Tip: El progreso es nuestra independencia tecnológica.
>>
>> “Trabajamos por una empresa mejor”
>>
>> _______________________________________________________
>>
>> Msc. Ing. Gilberto Castillo.
>> Presidencia. ETECSA.
>> Teléfono: 266-8558 Fax (537) 207-8931.
>> Edificio Beijing, 5to piso oficina 526. MTC.
>> Miramar, La Habana, Cuba.
>> _______________________________________________________
>>
>> ---
>> This message was processed by Kaspersky Mail Gateway 5.6.28/RELEASE
>> running at host imx2.etecsa.cu
>> Visit our web-site: <http://www.kaspersky.com>, <http://www.viruslist.com
>> >
>>
>>
>
>
> --
> --
> 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


From: Diego Ayala <netdiego81(at)gmail(dot)com>
To: Cesar A <cesar(dot)carbonara(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: crosstab: ERROR: invalid return type
Date: 2010-07-02 11:33:09
Message-ID: AANLkTimkSGtmH9txINF7iaWO2WXcdms_qWXDPfUPMCGr@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Cesar, te paso un ejemplo mio, que funciona perfectamente.. podrias hacer
algo parecido...
Espero te sirva...

El 2 de julio de 2010 07:29, Diego Ayala <netdiego81(at)gmail(dot)com> escribió:

>
>
> El 1 de julio de 2010 23:34, Cesar A <cesar(dot)carbonara(at)gmail(dot)com> escribió:
>
> así da un error de sintaxis
>>
>> El 2 de julio de 2010 13:26, Gilberto Castillo Martínez <
>> gilberto(dot)castillo(at)etecsa(dot)cu> escribió:
>>
>>>
>>>
>>> El jue, 01-07-2010 a las 13:04 -0430, Cesar A escribió:
>>>
>>> > No, nada.
>>> >
>>> >
>>> > Por si hay dudas con el resultado deseado:
>>> >
>>> >
>>> > est_002 |CACAO |CAFE |CAÑA
>>> > Mérida |83 |169 |68
>>> > Táchira |12 |29 |1
>>> > Trujillo | |26 |20
>>>
>>> >
>>> >
>>> >
>>> > AS lista(estado text, renglon text, cantidad text);
>>>
>>>
>>> Disculpe, si me perdí algo y ya lo probaron .... si los resultados van a
>>> ser convertidos en texto
>>>
>>>
>>> AS lista(estado::text, renglon::text, cantidad::text);
>>>
>>> >
>>> --
>>> Saludos,
>>>
>>> Tip: El progreso es nuestra independencia tecnológica.
>>>
>>> “Trabajamos por una empresa mejor”
>>>
>>> _______________________________________________________
>>>
>>> Msc. Ing. Gilberto Castillo.
>>> Presidencia. ETECSA.
>>> Teléfono: 266-8558 Fax (537) 207-8931.
>>> Edificio Beijing, 5to piso oficina 526. MTC.
>>> Miramar, La Habana, Cuba.
>>> _______________________________________________________
>>>
>>> ---
>>> This message was processed by Kaspersky Mail Gateway 5.6.28/RELEASE
>>> running at host imx2.etecsa.cu
>>> Visit our web-site: <http://www.kaspersky.com>, <
>>> http://www.viruslist.com>
>>>
>>>
>>
>>
>> --
>> --
>> 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
>

--
Diego Ayala

Attachment Content-Type Size
uso_crosstab1.sql application/octet-stream 1.4 KB

From: Cesar A <cesar(dot)carbonara(at)gmail(dot)com>
To: Diego Ayala <netdiego81(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: crosstab: ERROR: invalid return type
Date: 2010-07-02 14:07:39
Message-ID: AANLkTin9sneL2pmmWAECPDwy2ltu8vrrA0Lur8p_aAjp@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

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)

me devuelve los que podrían ser los títulos de las columnas. De ésta manera,
quedaría acomodar en alguna función para que se así...

Por ahora, está resuelto el problema... ahora, a trabajar una función para
mejorar la cosa. Gracias!

[0]http://www.postgresql.org/docs/8.3/interactive/tablefunc.html

El 2 de julio de 2010 07:03, Diego Ayala <netdiego81(at)gmail(dot)com> escribió:

> Cesar, te paso un ejemplo mio, que funciona perfectamente.. podrias hacer
> algo parecido...
> Espero te sirva...
>
> El 2 de julio de 2010 07:29, Diego Ayala <netdiego81(at)gmail(dot)com> escribió:
>
>
>>
>> El 1 de julio de 2010 23:34, Cesar A <cesar(dot)carbonara(at)gmail(dot)com>escribió:
>>
>> así da un error de sintaxis
>>>
>>> El 2 de julio de 2010 13:26, Gilberto Castillo Martínez <
>>> gilberto(dot)castillo(at)etecsa(dot)cu> escribió:
>>>
>>>>
>>>>
>>>> El jue, 01-07-2010 a las 13:04 -0430, Cesar A escribió:
>>>>
>>>> > No, nada.
>>>> >
>>>> >
>>>> > Por si hay dudas con el resultado deseado:
>>>> >
>>>> >
>>>> > est_002 |CACAO |CAFE |CAÑA
>>>> > Mérida |83 |169 |68
>>>> > Táchira |12 |29 |1
>>>> > Trujillo | |26 |20
>>>>
>>>> >
>>>> >
>>>> >
>>>> > AS lista(estado text, renglon text, cantidad text);
>>>>
>>>>
>>>> Disculpe, si me perdí algo y ya lo probaron .... si los resultados van a
>>>> ser convertidos en texto
>>>>
>>>>
>>>> AS lista(estado::text, renglon::text, cantidad::text);
>>>>
>>>> >
>>>> --
>>>> Saludos,
>>>>
>>>> Tip: El progreso es nuestra independencia tecnológica.
>>>>
>>>> “Trabajamos por una empresa mejor”
>>>>
>>>> _______________________________________________________
>>>>
>>>> Msc. Ing. Gilberto Castillo.
>>>> Presidencia. ETECSA.
>>>> Teléfono: 266-8558 Fax (537) 207-8931.
>>>> Edificio Beijing, 5to piso oficina 526. MTC.
>>>> Miramar, La Habana, Cuba.
>>>> _______________________________________________________
>>>>
>>>> ---
>>>> This message was processed by Kaspersky Mail Gateway 5.6.28/RELEASE
>>>> running at host imx2.etecsa.cu
>>>> Visit our web-site: <http://www.kaspersky.com>, <
>>>> http://www.viruslist.com>
>>>>
>>>>
>>>
>>>
>>> --
>>> --
>>> 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
>>
>
>
>
> --
> 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


From: Julio Cesar Rodriguez Dominguez <jurasec(at)gmail(dot)com>
To: Cesar A <cesar(dot)carbonara(at)gmail(dot)com>
Cc: Diego Ayala <netdiego81(at)gmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: crosstab: ERROR: invalid return type
Date: 2010-07-02 14:16:11
Message-ID: AANLkTil0kZlQAQJwBkrcqSKkTChf7znIQriFtStmAEz0@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

El 2 de julio de 2010 09:07, Cesar A <cesar(dot)carbonara(at)gmail(dot)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);


From: Cesar A <cesar(dot)carbonara(at)gmail(dot)com>
To: Julio Cesar Rodriguez Dominguez <jurasec(at)gmail(dot)com>
Cc: Diego Ayala <netdiego81(at)gmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: crosstab: ERROR: invalid return type
Date: 2010-07-02 15:06:23
Message-ID: AANLkTimnF60tweE4QGmuH4SC4EItvCppvjTNGTW2ioSL@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Claro, pero esos títulos pueden no ser siempre los mismos, o la misma
cantidad... de ahí el cuento

El 2 de julio de 2010 09:46, Julio Cesar Rodriguez Dominguez <
jurasec(at)gmail(dot)com> escribió:

>
>
> El 2 de julio de 2010 09:07, Cesar A <cesar(dot)carbonara(at)gmail(dot)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);
>
>

--
--
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


From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Cesar A <cesar(dot)carbonara(at)gmail(dot)com>
Cc: pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: crosstab: ERROR: invalid return type
Date: 2010-07-02 16:49:02
Message-ID: 1278089305-sup-5003@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Excerpts from Cesar A's message of jue jul 01 23:33:30 -0400 2010:
> Creo entender que al definir el campo como, por ejemplo, "estado" text le
> estoy diciendo que lo "convierta" a text, de hecho, el count creo que
> devuelve numeric... cierto?
>
> Sin embargo, probando, porque en efecto los 2 primeros campos son varchar:
>
> 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" varchar, "renglon" varchar, "cantidad" numeric);
> ERROR: return and sql tuple descriptions are incompatible

count() retorna bigint.

alvherre=# \da count
Listado de funciones de agregación
Schema | Nombre | Tipo de dato de salida | Tipos de datos de argumentos | Descripción
------------+--------+------------------------+------------------------------+-------------
pg_catalog | count | bigint | "any" |
pg_catalog | count | bigint | * |
(2 filas)


From: Cesar A <cesar(dot)carbonara(at)gmail(dot)com>
To: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
Cc: pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: crosstab: ERROR: invalid return type
Date: 2010-07-03 01:28:52
Message-ID: AANLkTimp0rApCQ1X1lQs-HkTszBfXT8koeMLI8S2e-w4@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Excelente Alvaro. Gracias

El 3 de julio de 2010 12:19, Alvaro Herrera
<alvherre(at)commandprompt(dot)com>escribió:

> Excerpts from Cesar A's message of jue jul 01 23:33:30 -0400 2010:
> > Creo entender que al definir el campo como, por ejemplo, "estado" text le
> > estoy diciendo que lo "convierta" a text, de hecho, el count creo que
> > devuelve numeric... cierto?
> >
> > Sin embargo, probando, porque en efecto los 2 primeros campos son
> varchar:
> >
> > 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" varchar, "renglon" varchar, "cantidad" numeric);
> > ERROR: return and sql tuple descriptions are incompatible
>
> count() retorna bigint.
>
> alvherre=# \da count
> Listado de funciones de agregación
> Schema | Nombre | Tipo de dato de salida | Tipos de datos de argumentos
> | Descripción
>
> ------------+--------+------------------------+------------------------------+-------------
> pg_catalog | count | bigint | "any"
> |
> pg_catalog | count | bigint | *
> |
> (2 filas)
>

--
--
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


From: glana <glana(at)cestel(dot)es>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: crosstab: ERROR: invalid return type
Date: 2010-07-08 08:21:43
Message-ID: 4C358A97.6010606@cestel.es
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Hola a todos

A mi me pasa lo mismo, intento que el numero y nombre de las columnas
sea algo dinámico, pero no hay forma.
Alguien sabe como conseguirlo???
Vamos, lo que queremos, creo, es algo igual al PIVOT de access.

Saludos

El 02/07/10 17:06, Cesar A escribió:
> Claro, pero esos títulos pueden no ser siempre los mismos, o la misma
> cantidad... de ahí el cuento
>
> El 2 de julio de 2010 09:46, Julio Cesar Rodriguez Dominguez
> <jurasec(at)gmail(dot)com <mailto:jurasec(at)gmail(dot)com>> escribió:
>
>
>
> El 2 de julio de 2010 09:07, Cesar A <cesar(dot)carbonara(at)gmail(dot)com
> <mailto:cesar(dot)carbonara(at)gmail(dot)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);
>
>
>
>
> --
> --
> 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 <http://www.gulmer.org.ve>
> Debian... todo lo que siempre has querido


From: juanramirez <juanramirez(at)cajazacate(dot)com(dot)sv>
To: pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: crosstab: ERROR: invalid return type
Date: 2010-07-08 14:05:52
Message-ID: 4C35DB40.3030502@cajazacate.com.sv
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

glana escribió:
> Hola a todos
>
> A mi me pasa lo mismo, intento que el numero y nombre de las columnas
> sea algo dinámico, pero no hay forma.
> Alguien sabe como conseguirlo???
> Vamos, lo que queremos, creo, es algo igual al PIVOT de access.
>
> Saludos
>

je je je, a mi me paso lo mismo pero no haye como hacerlo... esperaba
algo implementado en la version 9.0, pero no lo he visto en ningún lado,
creo que tendremos que esperar y lidiar con trabajo duro mientras
mejoran el contrib.


From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: juanramirez <juanramirez(at)cajazacate(dot)com(dot)sv>
Cc: pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: crosstab: ERROR: invalid return type
Date: 2010-07-08 20:48:11
Message-ID: 1278622049-sup-545@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Excerpts from juanramirez's message of jue jul 08 10:05:52 -0400 2010:

> je je je, a mi me paso lo mismo pero no haye como hacerlo... esperaba
> algo implementado en la version 9.0, pero no lo he visto en ningún lado,
> creo que tendremos que esperar y lidiar con trabajo duro mientras
> mejoran el contrib.

Sentarse a esperar es una solución, pero en un proyecto open source es
mucho más sensato tomar las riendas del problema y buscar una solución.

En todo caso, no sé si realmente será factible solucionar este problema
a nivel de SQL.


From: Edwin Quijada <listas_quijada(at)hotmail(dot)com>
To: <juanramirez(at)cajazacate(dot)com(dot)sv>, <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: RE: crosstab: ERROR: invalid return type
Date: 2010-07-12 14:03:01
Message-ID: BAY155-w13C62A4FEB27ED267C60CCE3B80@phx.gbl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda


EL contrib/crosstab no funciona dinamicamente, creo que la auyda te lo especifica :P

*-------------------------------------------------------*
*-Edwin Quijada
*-Developer DataBase
*-JQ Microsistemas
*-Soporte PostgreSQL
*-www.jqmicrosistemas.com
*-809-849-8087
*-------------------------------------------------------*


> Date: Thu, 8 Jul 2010 08:05:52 -0600
> From: juanramirez(at)cajazacate(dot)com(dot)sv
> To: pgsql-es-ayuda(at)postgresql(dot)org
> Subject: Re: [pgsql-es-ayuda] crosstab: ERROR: invalid return type
>
> glana escribió:
> > Hola a todos
> >
> > A mi me pasa lo mismo, intento que el numero y nombre de las columnas
> > sea algo dinámico, pero no hay forma.
> > Alguien sabe como conseguirlo???
> > Vamos, lo que queremos, creo, es algo igual al PIVOT de access.
> >
> > Saludos
> >
>
> je je je, a mi me paso lo mismo pero no haye como hacerlo... esperaba
> algo implementado en la version 9.0, pero no lo he visto en ningún lado,
> creo que tendremos que esperar y lidiar con trabajo duro mientras
> mejoran el contrib.
>
>
> -
> Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda(at)postgresql(dot)org)
> Para cambiar tu suscripción:
> http://www.postgresql.org/mailpref/pgsql-es-ayuda

_________________________________________________________________