Мы решаем проблему с дополнительным расписанием. Это выглядит так
ID | Date | Holiday | Year | CalendarWeek | DayName
1 | 17/12/2011 | 1 | 2011 | 50 | Monday
2 | 18/12/2011 | 0 | 2011 | 50 | Thursday
3 | 19/12/2011 | 0 | 2011 | 50 | Wendsday
С помощью этой таблицы вы можете решить свой вопрос следующим образом
select
(select count(d.DayName) from date_table as d
where d.DayName = 'Friday' and date >= start_date and date <= end_date ),
(select sum(d.Holiday) from date_table as d
where date >= start_date and date <= end_date )
Это также должно быть совместимо с SQL Server 2000. И это для SQL Server 2005 и выше:
with tmp(id) as
(
select id from from date_table where date >= start_date and date <= end_date
)
select
(select count(d.DayName) from date_table inner join tmp on tmp.id = id
where DayName = 'Friday' ),
(select sum(d.Holiday) from date_table inner join tmp on tmp.id = id )