J'ai une table avec l'ID INT et la date DATETIME, entre autres champs. Les lignes sont insérées dans cette table chaque jour de la semaine (non garanti), et plusieurs autres tables utilisent cet ID comme une clé étrangère.SQL Obtenir la date maximale dans l'ensemble de données pour chaque mois
Ma question est, comment puis-je obtenir l'id pour la date maximale de chaque mois, que je peux ensuite utiliser pour joindre à d'autres tables de données? Par exemple, si le processus a couru aujourd'hui, je voudrais voir les données pour le 31 janvier 28 février ... 31 oct 23 novembre
J'utilise SQL Server 2005.
Est-ce plus ou moins efficace que ce qui suit? SELECT * FROM (CHOISIR MOIS (d), MAX (d) DE #foo GROUPE PAR MOIS (d)) a JOIN #foo b ON ad = bd –
Cela ne suffit pas, parce que maintenant vous combinez ce mois de novembre avec novembre dernier, et novembre avant cela, etc. MONTH() renvoie juste un entier (novembre = 11). –
Votre requête ne fonctionne pas non plus, pour deux raisons: (a) il n'y a pas de colonne "d" dans la table dérivée "a" ... et (b) l'utilisation de MAX() suppose que l'identifiant est toujours incrémental . Que faire si vous réparez la table et régénérez les stats dans le mauvais ordre? Ma requête porte sur la date la plus élevée et non sur la plus grande clé de substitution. –