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)
No tengo servidor SQL disponible. Esto se prueba en mysql. Aquí el año y el mes son funciones para devolver el año y el mes de la fecha. Sintaxis de CASE debe ser el mismo en toda la base de datos.