Re: Ayuda con Crosstab

From: Jairo Graterón <jgrateron(at)gmail(dot)com>
To: Enrique Gushiken <kgushiken(at)gmail(dot)com>
Cc: Lista PostgreSQL <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Ayuda con Crosstab
Date: 2017-05-15 22:06:40
Message-ID: CALnU-rNCjNY=Kw9D9dZd1N8bySO1hgGwhFuEmptLctVGVW2k1A@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Saludos

Te paso éste SQL que hice para hacer un reporte de las ventas por mes
distribuidas en años cómo una sola consulta

with
T1 as (select extract(year from fechacreacion) as anio, extract(month from
fechacreacion) as mes, total from factura),
T2 as (select anio, mes, sum(total)as suma from T1 group by anio, mes)
select anio,
SUM(case when mes = 1 then suma else 0 end) as ene,
SUM(case when mes = 2 then suma else 0 end) as feb,
SUM(case when mes = 3 then suma else 0 end) as mar,
SUM(case when mes = 4 then suma else 0 end) as abr,
SUM(case when mes = 5 then suma else 0 end) as may,
SUM(case when mes = 6 then suma else 0 end) as jun,
SUM(case when mes = 7 then suma else 0 end) as jul,
SUM(case when mes = 8 then suma else 0 end) as ago,
SUM(case when mes = 9 then suma else 0 end) as sep,
SUM(case when mes = 10 then suma else 0 end) as oct,
SUM(case when mes = 11 then suma else 0 end) as nov,
SUM(case when mes = 12 then suma else 0 end) as dic
from T2 group by anio
order by anio

Seguramente existirán muchas otras formas.

El 15 de mayo de 2017, 11:36, Enrique Gushiken <kgushiken(at)gmail(dot)com>
escribió:

> Buenos días,
> Estoy tratatando de realizar una consulta tipo referencia cruzada en
> postgresql pero no logro obtener resultados. En access lo he logrado
> realizar de la siguiente manera:
>
> TRANSFORM Sum(total) AS Total
> SELECT tema, archivo
> FROM Descargas
> GROUP BY tema, archivo
> PIVOT mes;
>
> en postgresql intento con lo siguiente:
>
> SELECT * FROM crosstab(
> 'SELECT archivo, mes, total FROM v_descargas order by 1, 2',
> 'SELECT m FROM generate_series(1,12) m'
> ) AS report (
> archivo text, "Ene" text, "Feb" text, "Mar" text, "Abr" text, "May"
> text, "Jun" text, "Jul" text, "Ago" text, "Sep" text, "Oct" text, "Nov"
> text, "Dic" text
> );
>
> esto me devuelve la cantidad de filas y columnas exactas pero en valor me
> sale nulo, no llega a contabilizar cuantas descargas por mes tiene un
> archivo.
>
> la idea es que me muestra un cuadro similar a esto:
>
> NombreArchivo Ene Feb Mar Abr May ....
> =========== === === === === ===
> Archivo 1 2 1 4 3 7
> Archivo 2 5 9 8 4 6
> Archivo 3 6 7 2 1 4
>

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Cachique 2017-05-15 23:59:52 Re: Ayuda con Crosstab
Previous Message felix gonzales 2017-05-15 19:04:57 Re: [pgsql-es-ayuda] calculo preciso de años meses y dias