Una solución prudente creo seria esta.
SQL.
Código SQL
[-]Create Table ##Pagos (
CI int,
Pagos int,
Fecha DateTime
)
insert into ##Pagos Values(123, 50, convert(datetime,'30/10/1996', 103))
insert into ##Pagos Values(123, 23, convert(datetime,'30/11/1996', 103))
insert into ##Pagos Values(123, 45, convert(datetime,'31/12/1996', 103))
insert into ##Pagos Values(436, 45, convert(datetime,'30/10/1996', 103))
insert into ##Pagos Values(436, 96, convert(datetime,'30/11/1996', 103))
insert into ##Pagos Values(436, 87, convert(datetime,'31/12/1996', 103))
insert into ##Pagos Values(576, 63, convert(datetime,'30/10/1996', 103))
insert into ##Pagos Values(576, 74, convert(datetime,'30/11/1996', 103))
Select p.*
from ##Pagos p
inner join (Select CI, Max(Fecha) MaxFecha
From ##Pagos tp Group by tp.CI) pp on pp.CI = p.CI and p.Fecha = pp.MaxFecha
Drop Table ##Pagos
Se que es un post pasado pero puede servir a alguien.
Para el Penultimo.
Código SQL
[-]
Create Table ##Pagos (
CI int,
Pagos int,
Fecha DateTime
)
insert into ##Pagos Values(123, 50, convert(datetime,'30/10/1996', 103))
insert into ##Pagos Values(123, 23, convert(datetime,'30/11/1996', 103))
insert into ##Pagos Values(123, 45, convert(datetime,'31/12/1996', 103))
insert into ##Pagos Values(436, 45, convert(datetime,'30/10/1996', 103))
insert into ##Pagos Values(436, 96, convert(datetime,'30/11/1996', 103))
insert into ##Pagos Values(436, 87, convert(datetime,'31/12/1996', 103))
insert into ##Pagos Values(576, 63, convert(datetime,'30/10/1996', 103))
insert into ##Pagos Values(576, 74, convert(datetime,'30/11/1996', 103))
Select *, CAST(0 as int) IsLast
into #NewPagos
from ##Pagos
update np set np.IsLast = 2
from #NewPagos np
inner join (Select CI, Max(Fecha) MaxFecha
from #NewPagos
Group by CI) p on p.CI = np.CI and p.MaxFecha = np.Fecha
update np set np.IsLast = 1
from #NewPagos np
inner join (Select CI, Max(Fecha) MaxFecha
from #NewPagos
Where IsLast != 2
Group by CI) p on p.CI = np.CI and p.MaxFecha = np.Fecha
--Select CI, Pagos, Fecha
--from #NewPagos
Select CI, Pagos, Fecha
from #NewPagos
Where IsLast = 1
Drop Table ##Pagos
Drop table #NewPagos