Fernando.. ..talvez no entendí bien , de lo que vi creo que esto te serviría...
select larcod as Largo, count(*) as Total, sum(CASE when extract(day from now() - fecha) = 0 then 1 else 0 end) as Dia0, sum(CASE when extract(day from now() - fecha) = 1 then 1 else 0 end) as Dia1, sum(CASE when extract(day from now() - fecha) = 2 then 1 else 0 end) as Dia2, sum(CASE when extract(day from now() - fecha) = 3 then 1 else 0 end) as Dia3, sum(CASE when extract(day from now() - fecha) = 4 then 1 else 0 end) as Dia4, sum(CASE when extract(day from now() - fecha) = 5 then 1 else 0 end) as Dia5 from tabla_flores group by larcod order by 1; prueba y avisa.. Saludos Andrés. El 7 de mayo de 2010 17:13, Fernando Siguenza <fs...@hotmail.com> escribió: > 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: fhe...@ip-tel.com.ar > > To: fs...@hotmail.com > > CC: pgsql-es-ayuda@postgresql.org > > 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 Learn > more!<http://search.msn.com/results.aspx?q=7+wonders+world&mkt=en-US&form=QBRE> >