varlo
Дата: 09.09.2006 14:08:58
Есть такая таблица интервалов в днях на неделе.
DECLARE @WeekDays TABLE (
[DayFrom] smallint NOT NULL,
[DayTo] smallint NOT NULL
);
INSERT INTO @WeekDays VALUES(1,2); --ПН-ВТ
INSERT INTO @WeekDays VALUES(6,7);--СБ-ВС
Есть таблица, где указано, что такой-то человек [Id] работал в такой-то день
недели (DATEPART(dw,r.[Date])).
Как написать запрос, который бы выбирал тех людей, которые работали во временные интервалы из WeekDays.
SELECT r.[Id], DATEPART(dw,r.[Date]) DayOfWeek FROM Respondent r
WHERE DATEPART(dw,r.[Date]) >= ANY (SELECT wd.DayFrom FROM @WeekDays wd)
AND DATEPART(dw,r.[Date]) <= ANY (SELECT wd.DayTo FROM @WeekDays wd);
Таблица Respondent:
1 2
3 2
5 2
8 6
10 6
12 2
13 2
17 3
18 4
varlo
Дата: 09.09.2006 14:40:42
Уже нашел.
select distinct (r.[Id]), DATEPART(dw,r.[Date]) DayOfWeek
from Respondent as r, @WeekDays as d
where DATEPART(dw,r.[Date]) >= d.DayFrom
AND DATEPART(dw,r.[Date]) <= d.DayTo