y si cambias al forma?
te hago la consulta aproximada (no es necesariamente asi usa tus campos)
Código SQL
[-]
Select Distinct T.CodigoPersonal, T.NombrePersonal,
Case When h.fKey = 'Entrada' then h.Hora else 0 end) As Entrada,
Case When h.fKey = 'InicioAlmuerzo' then h.Hora else 0 end) as Inicio,
Case When h.fKey = 'FinAlmuerzo' then h.Hora else 0 end) As Fin,
Case When h.fKey = 'Salida' then h.Hora else 0 end) As Salida
From Trabajadores T
Left Join Horarios h on T.CodigoPersonal = H.CodigoPersonal
Where H.Fecha = '2011/05/17'
eso te mostrara el personal con las 4 marcaciones 1 en cada columna.. repito... es un pseudocodigo, tu debeas usar tus campos