Gracias amigo por la respuesta, estoy justo analizando la funcion, pero no
logro dar con el resultado deseado, tengp esta consulta y no obtengo lo que
quiero
select *
from crosstab(
'select bunlarcod,count(buncod),current_date-bunfec as dia
from bunche
where bunfec>=current_date-3 and bunfec<=current_date
group by bunfec,bunlarcod')
AS bunche(bunlarcod int,dia int,dia1 int)
que me da esto
bunlarcod
dia
dia1
20
2
10
3
20
3
y yo quiero algo como esto.
largo
Total
dia0
dia1
dia2
dia3
dia4
dia5
10
1
0
0
0
1
0
0
20
5
0
0
1
4
0
0
Ojala y me puedan ayudar a armar el select.
Saludos.
he probado tambien con un select normay y algunos case, con esta consulta
select bunlarcod,count(buncod)as dispo,
case when bunfec=current_date-1 then count(buncod) else 0 end as dia0,
case when bunfec=current_date-2 then count(buncod) else 0 end as dia1,
case when bunfec=current_date-3 then count(buncod) else 0 end as dia2,
case when bunfec=current_date-4 then count(buncod) else 0 end as dia3,
case when bunfec=current_date-5 then count(buncod) else 0 end as dia4,
case when bunfec=current_date-6 then count(buncod) else 0 end as dia5,
case when bunfec=current_date-7 then count(buncod) else 0 end as dia6
from bunche
group by bunfec,bunlarcod
pero obtengo esto
bunlarcod
dispo
dia0
dia1
dia2
dia3
dia4
dia5
10
1
0
0
0
1
0
0
20
5
0
0
1
0
0
0
20
5
0
0
0
4
0
0
qaue tampoco es lo que quiero se me repite el largo cuando deberia salir solo
un registro del largo 20.
Saludos
> From: [email protected]
> To: [email protected]
> CC: [email protected]
> Subject: RE: [pgsql-es-ayuda] Ayuda con Select
> Date: Fri, 7 May 2010 17:58:03 -0300
>
>
>
> > -----Mensaje original-----
> > De: Fernando Siguenza
> >
> > Amigos como estan, en otro foro me ayudaron con la respuesta
> > de lo que necesito pero solo que esta en sqlserver, ahi veo
> > que hay una funcion pivot que hace lo que necesito, la
> > consulta es algo como la siguiente select bunlarcod,Total =
> > [0]+[1]+[2]+[3]+[4]+[5],dia0 = [0], dia1 = [1], dia2 = [2],
> > dia3 = [3], dia4 = [4], dia5 = [5] from ( select bunlarcod,
> > buncod, datediff(dd, bunfec, getdate()) as dias from bunche
> > where bunfec >= dateadd(dd, -5,
> > cast(convert(char(8),getdate(), 112) as smalldatetime))
> > ) T
> > PIVOT (count(buncod) FOR dias in ([0], [1], [2], [3], [4], [5])) as P
> >
> > Ahora mi duda Hay alguna funcion parecida a la pivot en postgre???
> >
> > Saludos
> >
>
> Hola. En Postgres es el modulo tablefunc y sus funciones crosstab:
>
> http://www.postgresql.org/docs/8.4/interactive/tablefunc.html
>
> Slds.
>
>
_________________________________________________________________
Explore the seven wonders of the world
http://search.msn.com/results.aspx?q=7+wonders+world&mkt=en-US&form=QBRE