SELECT year(holidaydate),month(holidaydate),
sum(case Weekend when true then 1 else 0 end) wkEnd,
sum(case PublicHoliday when true then 1 else 0 end) pubHol
FROM Holiday
GROUP BY year(holidaydate),month(holidaydate)
Não tenho servidor SQL disponível. Isso é testado no mysql. Aqui ano e mês são funções para retornar o ano e o mês da data. Sintaxe de CASE deve ser o mesmo em todo o banco de dados.