Я пытаюсь переписать следующий запрос, чтобы дать мне лучших исполнителей на неделю, а не на день. Поскольку моя неделя проходит с пятницы по воскресенье, мне нужно сказать sql, что если дата равна x, то на неделе она находится в y.Заявление о ситуации в рамках предложения Where
Вот мой работает ежедневно запрос:
SELECT u.UserName, COUNT t.Policy AS Policies, SUM t.Fee AS Premium
FROM Users u INNER JOIN PolicyInfo t ON u.UserID = t.UserID
WHERE t.Date >= convert(date,getdate()))
GROUP BY u.UserName
ORDER BY Policies desc, Premium desc
Вот мой нерабочими еженедельный запрос:
SELECT u.UserName, COUNT t.Policy AS Policies, SUM t.Fee AS Premium
FROM Users u INNER JOIN PolicyInfo t ON u.UserID = t.UserID
WHERE t.Date >= convert(date,getdate()))
AND CASE DATEPART(WEEKDAY, t.Date)
WHEN 1 THEN cast (convert(varchar (8), DATEADD(d,5,[t.Date]),112) as date)
WHEN 2 THEN cast (convert(varchar (8), DATEADD(d,4,[t.Date]),112) as date)
WHEN 3 THEN cast (convert(varchar (8), DATEADD(d,3,[t.Date]),112) as date)
WHEN 4 THEN cast (convert(varchar (8), DATEADD(d,2,[t.Date]),112) as date)
WHEN 5 THEN cast (convert(varchar (8), DATEADD(d,1,[t.Date]),112) as date)
WHEN 6 THEN cast (convert(varchar (8), DATEADD(d,0,[t.Date]),112) as date)
WHEN 7 THEN cast (convert(varchar (8), DATEADD(d,6,[t.Date]),112) as date)
GROUP BY u.UserName
ORDER BY Policies desc, Premium desc
вы не сказали случай заявлению 'end' может быть причиной, почему –
вы ищете сверху исполнители ** этой ** недели? –
Какие СУБД вы используете? SQL Server? – PinnyM