Я работаю в Microsoft SQL Server 2005, и мне нужно провести анализ игроков, которые будут участвовать в нашем турнире 50+ по вторникам -> Чтобы пройти, им нужно набрать 5+ очков в понедельник или вторник на этой неделе до 14:00. , и очки не накапливаются (должны быть минимум 5 в понедельник или вторник до 14:00). Код, который я использую, приведен ниже, но пока содержит только диапазон дат для определенного понедельника и вторника. Мне нужны все понедельники и вторники в течение 2 месяцев. Я новичок в этом (своего рода брошенный мне на колени в качестве дополнительной обязанности, поэтому я должен учиться на лету) ...
До сих пор, как я уже говорил, я был в состоянии самостоятельно преуспеть в получении всей необходимой мне информации, но она относится только к 1 неделе. Все, что я нашел в Интернете до сих пор, было более запутанным, чем я могу объяснить, и никто не ссылался на код, который я предоставил, вместо этого давая мне совершенно новый код, который я не могу использовать ...
SELECT
dbo.CombinedPts.Account, dbo.CombinedPts.FirstName,
dbo.CombinedPts.LastName,
ISNULL(dbo.CombinedPts.EGSPts, 0) AS EGS,
ISNULL(dbo.CombinedPts.IRPts, 0) AS IR,
DATENAME(dw, dbo.CombinedPts.Date) AS WkDay,
DATEDIFF(YY, dbo.PlayerMaster.Birthdate, {fn current_date()}) - CASE WHEN (MONTH(dbo.PlayerMaster.Birthdate)=MONTH({fn current_date()}) AND DAY(dbo.PlayerMaster.Birthdate) > DAY({fn current_date()}) OR MONTH (dbo.PlayerMaster.Birthdate) > MONTH ({fn current_date()})) THEN 1 ELSE 0 END AS Age
FROM
dbo.CombinedPts, dbo.PlayerMaster
WHERE
(DATEDIFF(YY, dbo.PlayerMaster.Birthdate, {fn current_date()}) >= 50)
AND (dbo.CombinedPts.EGSPts >= 5 OR dbo.CombinedPts.IRPts >= 5)
AND (dbo.CombinedPts.Account = dbo.PlayerMaster.Account)
AND (Date BETWEEN '10/11/2010 00:00:00' AND '10/11/2010 13:59:59' OR Date BETWEEN '10/12/2010 00:00:00' AND '10/12/2010 13:59:59')
AND (DATEPART(dw, dbo.CombinedPts.Date) = 2 OR DATEPART(dw, dbo.CombinedPts.Date) = 3)
GROUP BY
dbo.CombinedPts.Account,
dbo.CombinedPts.FirstName,
dbo.CombinedPts.LastName,
DATENAME(dw, dbo.CombinedPts.Date),
dbo.CombinedPts.EGSPts,
dbo.CombinedPts.IRPts,
dbo.PlayerMaster.Birthdate
ORDER BY
dbo.CombinedPts.Account
В качестве примечания, в нашем SQL Server 2005 у меня нет разрешений на создание подзапросов (я стал заядлым пользователем UNION ALL ->, который до сих пор бесполезен в запросе), и при этом у меня нет разрешения для генерации таблиц, поэтому все, что я делаю, должно быть в одном запросе ... И до сих пор вся помощь, которая имела смысл, заключалась в использовании таблиц и подзапросов.