El 27/04/2016 08:59, "Anthony Sotolongo" <asotolo...@gmail.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 > > > saludos > > > El 27 de abril de 2016, 10:22, Edwin De La Cruz <edwinsp...@gmail.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@postgresql.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ó.