Hola Albero Suponiendo que el Id es la clave para relacionar los registros, eso sale con un JOIN con la misma tabla:
WITH base AS ( SELECT * FROM (VALUES (4,208902,'02','11/02/2015'::date), (4,208902,'02','16/03/2015'::date), (4,208902,'02','01/04/2015'::date), (4 ,404058,'04','20/05/2015'::date), (4 ,404058,'04','01/07/2015'::date)) as A(Id,Codigo,Tipo_Reg ,Fecha) ) SELECT a.Id,a.Codigo,a.Tipo_Reg,max(a.Fecha) as ultimo FROM base as a JOIN base as b on a.id=b.id and b.tipo_reg='02' and b.Fecha<=a.fecha WHERE a.Tipo_Reg='04' GROUP BY a.Id,a.Codigo,a.Tipo_Reg El 28 de abril de 2016, 09:02, Alberto Cuevas<betocuevas....@gmail.com> escribió: > Buenos días a todos, tengo una tabla en la cual se registra un tipo de > registro (Tipo_Reg) y la Fecha, lo que se requiere es obtener solo los > registros con Tipo_Reg = 04 pero que antes hayan tenido Tipo_Reg = 02. > > ------------------------------------------------------------ > | Id | Codigo | Tipo_Reg | Fecha | > ------------------------------------------------------------ > | 4 | 208902 | 02 | 11/02/2015 | > | 4 | 208902 | 02 | 16/03/2015 | > | 4 | 208902 | 02 | 01/04/2015 | > | 4 | 404058 | 04 | 20/05/2015 | > | 4 | 404058 | 04 | 01/07/2015 | > ------------------------------------------------------------ > > Alguna idea por favor. > > Saludos. > > > -- 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