Je travaille dans Microsoft SQL Server 2005 et j'ai besoin de faire une analyse des joueurs qui se qualifient pour notre tournoi des 50+ les mardis -> Pour se qualifier, ils doivent obtenir 5+ points le lundi ou le mardi cette semaine avant 14h, et les points ne sont pas cumulatifs (il faut obtenir un minimum de 5 le lundi ou le mardi avant 14h). Le code que j'utilise est ci-dessous mais jusqu'à présent ne contient qu'une plage de dates pour un lundi et un mardi spécifiques. J'ai besoin de tous les lundis et mardis sur une période de 2 mois. Je suis nouveau à ce sujet (un peu jeté sur mes genoux comme un devoir supplémentaire, donc je dois apprendre à la volée) ...Comment définir une plage de dates pour 2 jours récurrents chaque semaine sur une période de 2 ou 3 mois en SQL?
Jusqu'à présent, comme je l'ai dit, j'ai pu réussir par moi-même en obtenant toutes les informations dont j'ai besoin mais ce n'est spécifique qu'à 1 semaine. Tout ce que j'ai trouvé en ligne a été jusqu'ici plus confus que je ne peux expliquer et personne n'a mentionné le code que je fourni, au lieu de me donner tout nouveau code que je ne peux pas utiliser ...
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
Comme une note de côté, en notre SQL Server 2005, je n'ai pas les permissions pour créer des sous-requêtes (je suis devenu un utilisateur avide de UNION ALL -> qui s'est avéré inutile dans la requête) et je n'ai pas non plus la permission de générer des tables être dans une requête ... Et jusqu'à présent, toute l'aide qui a fait sens a été d'utiliser des tables et des sous-requêtes.
Quelle colonne pouvez-vous rejoindre dbo.CombinedPts, dbo.PlayerMaster sur? Exécutez-vous ceci dans Management Studio? – Vinnie
Je n'étais pas au courant que les sous-requêtes étaient quelque chose qui pourrait être refusé par les autorisations ... êtes-vous sûr que c'était une erreur d'autorisations et pas une erreur de syntaxe dans votre sous-requête? – Leslie
Nous l'exécutons sur un réseau et il est configuré de sorte qu'une seule personne (notre directeur informatique) puisse éditer n'importe quoi, je ne peux pas enregistrer quoi que ce soit dans SQL Server 2005, je ne peux pas créer de sous-requêtes. ne sont pas sauvegardés. Il ne cesse de me dire qu'il va le réparer pour que je puisse utiliser la vue et le design (il ne me laisse pas faire ça non plus) et ainsi je peux sauver la table et les sous-requêtes mais pas vraiment modifier les bases de données . – Hisa