Hola Carmen.
Un poco complicado el caso, lo siguiente es sólo una sugerencia a ver que te parece.
Código:
-- Haz una función que te devuelva el número de días inhabiles entre dos fechas.
-- Llamemos a esta función NoDiasInhabiles.
--Entonces podríamos tener algo como ejemplo lo siguiente:
SET @NoDiasInh = NoDiasInhabiles (@FechaInicial , @FechaFinal )
-- Ahora obtenemos las horas de diferencia.
SET @NoHorasDiffHab = DATEDIFF(hh, @FechaInicial, @FechaFinal )
-- Finalmente le restamos las horas inhabiles.
SET @NoHorasDiffHab = @NoHorasDiff - ( @NoDiasInh * 24 )
Ahora bien sí lo quieres aplicar a una consulta, puedes hacer lo siguiente:
Código:
SELECT ( DATEDIFF(hh, FechaInicial, FechaFinal ) - ( NoDiasInhabiles (@FechaInicial , @FechaFinal ) * 24 ) ) as HorasDiffHab
La función
NoDiasInhabiles la puedes hacer basado en lo que ya tienes acerca de los días habiles.
Espero no haberte confundido más.
Saludos y suerte!!