Como excluir fins de semana e feriados na consulta do servidor sql

Estou criando uma consulta que ajustará a data, excluindo feriados e fins de semana.

Dados de exemplo:

Adjusted Date | Adjusted Date(Excluding Holidays and weekends)

02/06/16 | 02/09/16

No meu exemplo, A data é um fim de semana e a data ajustada se torna 9 de fevereiro, pois 8 de fevereiro é feriado, portanto, é necessário ajustar para que a data ajustada seja um dia útil. Atualmente, tenho uma tabela separada de todos os finais de semana e feriados de um ano fiscal.

select  case when (
               select   count(dbo.WeekendsHoliday.[Weekends & Holidays])
               from     dbo.WeekendsHoliday
               where    dbo.WeekendsHoliday.[Weekends & Holidays] 
                    = case when convert(time, [Time Received]) > convert(time, '5:00:00 PM') 
                           then dateadd(day, 1, [Date Received]) 
                           else [Date Received] 
                      end
              ) > 0 
         then case (datename(DW, 
                             case when convert(time, [Time Received]) > convert(time, '5:00:00 PM') 
                                  then dateadd(day, 1, [Date Received])
                                  else [Date Received] 
                             end))
                when 'Saturday'
                then dateadd(day, 2, 
                             case when convert(time, [Time Received]) > convert(time, '5:00:00 PM') 
                                  then dateadd(day, 1, [Date Received])
                                  else [Date Received] 
                             end)
                else dateadd(day, 1, 
                             case when convert(time, [Time Received]) > convert(time, '5:00:00 PM') 
                                  then dateadd(day, 1, [Date Received])
                                  else [Date Received] 
                             end)
              end
    end as [Adjusted Date Excluding holidays and weekends]

O que acontece aqui é que, se o feriado for de 2 dias consecutivos (quinta e sexta-feira), a data ajustada seria sábado, o que ainda não é válido porque é um fim de semana.

A data ajustada é um alias aqui

Eu realmente preciso da sua ajuda. obrigado

questionAnswers(4)

yourAnswerToTheQuestion