Hola Lista Lo genere con la siguiente sentencia:
SELECT a.key,a.hora max(b.hora) AS hora_anterior FROM (VALUES (1,'21:15'::time),(1,'20:17'::time),(1,'22:15'::time)) AS a(key,hora) JOIN (VALUES (1,'20:15'::time),(1,'20:16'::time),(1,'21:16'::time),(1,'22:16'::time),(1,'23:16'::time)) AS b(key,hora) ON a.key=b.key AND a.hora>b.hora GROUP BY 1,2 ORDER BY 1,2 El 14 de junio de 2016, 15:03, Maximiliano Riffo<maxrif...@gmail.com> escribió: > Hola estimados, tengo una consulta. Lo que sucede es que tengo dos tablas > ambas tienen un key y una fecha, entonces lo que debo hacer es traer la > fecha mas cercana de la otra tabla > Ejemplo > tabla b > key hora > 1 20:15 > 1 20:16 > 1 21:16 > 1 22:16 > 1 23:16 > tabla a > key hora > 1 21:15 > 1 20:17 > 1 22:15 > resultado > a.key a.hora b.hora anterior > 1 21:45 21:16 > 1 20:30 20:16 > 1 22:18 22:16 > Para cada registro de la tabla a obtengo la fecha mas cercana anterior de > la tabla b y que tengan el mismo key. > Estoy tratando con windows funtions, pero hay algo en lo que fallo. ¿ Esta > bien que las utilice o existe algo mejor ?. > > Las tablas tiene aproximadamente 1 millon de registros cada una. > Si tuvieran alguna sugerencia. > > Saludos y gracias > > -- > Max > > -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate EnterpriseDB Certified PostgreSQL 9.3 Associate