Saludos El día 27 de abril de 2016, 11:17, Edwin De La Cruz <edwinsp...@gmail.com> escribió: > > 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 >> >>
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 <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ó. - 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