Hola, puedes hacer de la sgte forma:
Código PHP:
select a.libro, isnull(c.fecha, b.fecha) from
(select distinct libro) a
left join (select libro, max(fecha) from libros where fecha <'20071115') b on a.libro=b.libro
left join (select libro, fecha from libros where fecha >= '20071115' and fecha <'20071116') c on a.libro=c.libro
saludoss