Re: Ayuda con Crosstab

From: Adriana Rita <adriana(at)fmed(dot)uba(dot)ar>
To: Mario Soto Cordones <masc68(at)gmail(dot)com>
Cc: lista postrges <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Ayuda con Crosstab
Date: 2011-03-01 13:42:11
Message-ID: 1298986931.13952.1.camel@comechingon.fmed.uba.ar
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda


Hola Mario:
Si lo que vos queres es que te de totales por mes en el query deberias
hacer algo como esto, agruparlo tambien por mes:
select * from crosstab('select a.id_usuario,extract(month from
a.fe_ingreso) as mes,sum(a.mo_orden)as valor from compras as a where
extract(year from a.fe_ingreso)=2011 group by a.id_usuario,extract(month
from a.fe_ingreso) order by 1'), as foo (Usuario varchar,Enero double
precision,Febrero double precision,....,Diciembre double precision);
Espero que sea lo que necesitas.
Saludos
Adriana

El lun, 28-02-2011 a las 15:10, Mario Soto Cordones escribió:
> Hola lista,
>
>
>
> Tengo la siguiente sentencia:
>
>
>
> SELECT
>
> a.id_usuario,
>
> a.fe_ingreso,
>
> sum(a.mo_orden) as valor
>
>
>
> from compras.ordcab a
>
> where EXTRACT(year from a.fe_ingreso) = '2011'
>
> and a.id_usuario = 'MSOTO'
>
> GROUP BY
>
> a.id_usuario,
>
> a.fe_ingreso
>
> ORDER BY
>
> a.fe_ingreso
>
>
>
> y me entrega el siguiente resultado:
>
>
>
> id_usuario
>
> fe_ingreso
>
> valor
>
> MSOTO
>
> 2011-01-16
>
> 492936
>
> MSOTO
>
> 2011-01-17
>
> 581556
>
> MSOTO
>
> 2011-01-20
>
> 583680
>
> MSOTO
>
> 2011-01-22
>
> 25000
>
> MSOTO
>
> 2011-01-23
>
> 1237415
>
> MSOTO
>
> 2011-01-24
>
> 1031500
>
> MSOTO
>
> 2011-01-25
>
> 100000
>
> MSOTO
>
> 2011-01-26
>
> 618849
>
> MSOTO
>
> 2011-02-17
>
> 177840
>
> MSOTO
>
> 2011-02-18
>
> 214320
>
> MSOTO
>
> 2011-02-19
>
> 1285920
>
> MSOTO
>
> 2011-02-23
>
> 4436424
>
>
> 12 row(s)
>
> Ahora bien cuando le aplico la crosstab:
>
>
>
> select * from crosstab('SELECT
>
> a.id_usuario,
>
> a.fe_ingreso,
>
> sum(a.mo_orden) as valor
>
>
>
> from compras.ordcab a
>
> where EXTRACT(year from a.fe_ingreso) = ''2011''
>
> and a.id_usuario = ''MSOTO''
>
> GROUP BY
>
> a.id_usuario,
>
> a.fe_ingreso
>
> ORDER BY
>
> a.fe_ingreso')
>
> as foo(usuario varchar,
>
> enero DOUBLE PRECISION,
>
> febrero DOUBLE PRECISION,
>
> marzo DOUBLE PRECISION,
>
> abril DOUBLE PRECISION,
>
> mayo DOUBLE PRECISION,
>
> junio DOUBLE PRECISION,
>
> julio DOUBLE PRECISION,
>
> agosto DOUBLE PRECISION,
>
> septiembre DOUBLE PRECISION,
>
> octubre DOUBLE PRECISION,
>
> noviembre DOUBLE PRECISION,
>
> diciembre DOUBLE PRECISION
>
> );
>
>
>
>
>
> Me da éste resultado, el cual a simple vista es incorrecto:
>
>
>
> usuario
>
> enero
>
> febrero
>
> marzo
>
> abril
>
> mayo
>
> junio
>
> julio
>
> agosto
>
> septiembre
>
> octubre
>
> noviembre
>
> diciembre
>
> MSOTO
>
> 492936
>
> 581556
>
> 583680
>
> 25000
>
> 1237415
>
> 1031500
>
> 100000
>
> 618849
>
> 177840
>
> 214320
>
> 1285920
>
> 4436424
>
>
> 1 row(s)
>
> Pero no entiendo porque… alguien me puede dar alguna pista
>
>
>
> Saludos y gracias
>
>
>
>
>
>

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Miguel Angel Hernandez Moreno 2011-03-02 11:57:26 postgres con stand-alone
Previous Message Alvaro Herrera 2011-02-28 23:00:08 Re: coincidencias en postgres?