From: | "Marcos T(dot) Rios Rodriguez" <marcosrios(at)planet(dot)com(dot)pe> |
---|---|
To: | Raúl Andrés Duque Murillo <ra_duque(at)yahoo(dot)com(dot)mx> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Seleccionar último registro entre un grupo |
Date: | 2008-08-14 15:53:41 |
Message-ID: | 48A45505.8040507@planet.com.pe |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Probaste con:
SELECT DISTINCT ON (id_parte) id_parte, anno, mes, valor
from tabla
order by id_parte, ano, mes DESC
Saludos,
Marcos Rios.
Arequipa - Peru
Raúl Andrés Duque Murillo escribió:
> Cordial saludos compañeros. Tengo el siguiente problema y aunque lo he
> solucionado se me hace bastante pesado para la cantidad de registros
> que tengo, por lo cual quisiera saber si a alguien se le ocurre una
> mejor alternativa o algún artificio útil:
>
> Tengo una tabla más o menos así:
>
> id_parte anno mes valor
> 1 2005 1 5
> 1 2005 2 10
> 2 2008 5 20
> 2 2008 6 30
> 3 2008 4 40
>
> Lo que quiero es obtener el último valor (Anno/Mes) por cada parte.
> Para el ejemplo: la salida sería:
>
> id_parte anno mes valor
> 1 2005 2 10
> 2 2008 6 30
> 3 2008 4 40
>
> Por ahora lo que hago es algo de este estilo:
>
> SELECT tabla.id_parte, tabla.anno, tabla.mes, tabla.valor
> FROM (
> SELECT tabla.id_parte, MAX(tabla.anno*100
> + tabla.mes) AS AnnoMes
> FROM tabla
> GROUP BY tabla.id_parte
> ) maxtabla INNER JOIN tabla ON tabla.id_parte =
> maxtabla.id_parte AND AnnoMes = (tabla.anno*100 + tabla.mes)
>
> Atentamente,
>
> RAUL DUQUE
> Bogotá, Colombia
>
>
> __________ Información de ESET Smart Security, versión de la base de
> firmas de virus 3356 (20080814) __________
>
> ESET Smart Security ha comprobado este mensaje.
> http://www.eset.com
From | Date | Subject | |
---|---|---|---|
Next Message | fulanito detal | 2008-08-14 16:27:28 | Referencia entre bases de datos |
Previous Message | Alvaro Herrera | 2008-08-14 14:25:53 | Re: Seleccionar último registro entre un grupo |