Re: Como obtener el ultimo registro de un rango de registros

From: Edwin De La Cruz <edwinspire(at)gmail(dot)com>
To: Lista Postgres ES <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Como obtener el ultimo registro de un rango de registros
Date: 2016-04-27 18:01:29
Message-ID: CAKaZx-rvTD2BnywrS24aJDhNi2Z7XvLz0-vfCvVfSvFEwaN1kQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Saludos

El día 27 de abril de 2016, 11:17, Edwin De La Cruz
<edwinspire(at)gmail(dot)com> escribió:
>
> El 27/04/2016 08:59, "Anthony Sotolongo" <asotolongo(at)gmail(dot)com> escribió:
>>
>> HOla Edwin, una buena opcion es usar WINDOWS FUNCTIONS y una posible
>> solucion pudiera ser:
>>
>>
>> with resultado as (
>> select row_number()OVER (PARTITION BY idevettype,idaccount, zu order by
>> idevent desc ) as num, *,max(dateevent )OVER (PARTITION BY idevettype,
>> idaccount, zu order by idevent desc ) from ( values (1, 56, 1, 100,
>> '03/01/16 00:00'::timestamp),
>> (2, 62, 1, 100, '04/01/16 00:00'::timestamp),
>> (3, 62, 2, 100, '03/01/16 20:45'::timestamp),
>> (4, 56, 1, 100, '04/01/16 10:00'::timestamp),
>> (5, 56, 9, 200, '03/01/16 00:00'::timestamp),
>> (6, 62, 1, 200, '04/01/16 15:00'::timestamp),
>> (7, 56, 1, 100, '07/01/16 00:00'::timestamp),
>> (8, 62, 1, 100, '09/01/16 00:00'::timestamp),
>> (9, 62, 1, 100, '09/01/16 13:00'::timestamp),
>> (10, 56, 1, 100, '09/01/16 15:12'::timestamp)
>>
>> ) AS tabla (idevent ,idevettype ,zu ,idaccount, dateevent)
>> )
>>
>> select idevent, idevettype, zu, idaccount, dateevent from resultado where
>> num<2
>>
>>

Justo una asi fue que vi en una de las tantas paginas que lei pero la
verdad que no la entendi y el ejemplo era para Sql Server.
Tengo aun mucho por leer :)
Gracias.

>> saludos
>>
>>
>> El 27 de abril de 2016, 10:22, Edwin De La Cruz <edwinspire(at)gmail(dot)com>
>> escribió:
>>>
>>> Saludos cordiales.
>>> Tengo una tabla cuyos campos relevantes son:
>>> idevent idevettype zu idaccount dateevent
>>> 1 56 1 100 03/01/16 00:00
>>> 2 62 1 100 04/01/16 00:00
>>> 3 62 2 100 03/01/16 20:45
>>> 4 56 1 100 04/01/16 10:00
>>> 5 56 9 200 03/01/16 00:00
>>> 6 62 1 200 04/01/16 15:00
>>> 7 56 1 100 07/01/16 00:00
>>> 8 62 1 100 09/01/16 00:00
>>> 9 62 1 100 09/01/16 13:00
>>> 10 56 1 100 09/01/16 15:12
>>>
>>> Y necesito una consulta que me devuelva algo asi:
>>>
>>> idevent idevettype zu idaccount dateevent
>>> 10 56 1 100 09/01/16 15:12
>>> 9 62 1 100 09/01/16 13:00
>>> 6 62 1 200 04/01/16 15:00
>>> 3 62 2 100 03/01/16 20:45
>>> 5 56 9 200 03/01/16 00:00
>>>
>>>
>>> Usando la consulta:
>>> SELECT ideventtype, zu, idaccount, MAX(dateevent) AS de FROM events
>>> where (idaccount = 100 OR idaccount = 200) GROUP BY ideventtype,
>>> idaccount, zu;
>>>
>>> Me devuelve las filas que esperaría recibir, pero.... el campo que
>>> necesito en realidad es el idevent, si agrego esa columna a la
>>> consulta obtengo el error:
>>>
>>> ERROR: la columna «events.idevent» debe aparecer en la cláusula GROUP
>>> BY o ser usada en una función de agregación
>>> SQL state: 42803
>>> Character: 8
>>>
>>>
>>> Quiza sea una pregunta de novato pero he leído y leído y en ningún
>>> caso he conseguida hacer que funcione como espero.
>>> Encontré una solución a lo que necesito pero era para SQL SERVER con
>>> unas funciones que no había visto antes, ahora mismo no recuerdo y no
>>> reencuentro el link para ponerlo aqui.
>>>
>>>
>>> Espero que alguien que se haya visto en este caso o similar me pueda
>>> orientar un poco.
>>>
>>>
>>> Mis proyectos de software libre en:
>>> Github - edwinspire
>>>
>>> -
>>> Enviado a la lista de correo pgsql-es-ayuda
>>> (pgsql-es-ayuda(at)postgresql(dot)org)
>>> Para cambiar tu suscripción:
>>> http://www.postgresql.org/mailpref/pgsql-es-ayuda
>>
>>
>
> Gracias a todos por sus sugerencias. Les pruebo y les comentó.

-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda(at)postgresql(dot)org)
Para cambiar tu suscripcin:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Ivan Perales M. 2016-04-27 18:10:12 Re: Como obtener el ultimo registro de un rango de registros
Previous Message Anthony Sotolongo 2016-04-27 17:48:55 Re: Consulta sobre cursor