J'ai une table comme ceci:
Date Student Rank 01.01.09 Alex 1 01.01.09 Tom 2 01.01.09 Sam 3 01.02.09 Alex 1 01.02.09 Sam 1 01.02.09 Tom 2
4 Réponses :
Vous souhaitez utiliser la fonction la magie est dans la clause class code> dans t-sql: sur code>. Voir, il divise ces classements par date code>, puis commandes ces sous-ensembles par score code>. Brillant, hein? P> p>
La clause sur code> est incroyable. Vous pouvez faire n'importe quelle fonction d'agrégation avec une partition par code>. Très soigné.
Wow ... ça impressionne ... mais il a dit que le rang () prend exactement 0 arguments, donc je viens de débarrasser du contenu de parenthèses et cela a fonctionné parfaitement ... merci
+1 Excellent, maintenant: Insérer dans les valeurs _brain (info) (@nugget) :)
Vous devez utiliser qui commandera les données par date, puis classement. Vous pouvez ajouter autant de champs que vous le souhaitez, tant qu'ils sont comparables (vous ne pouvez pas comparer les blobs ou les champs de texte longs). P> espère que cela aide. P> P> commander par code>:
Vous devez écrire une fonction qui informera le rang pour un étudiant et une date donnés. Ensuite, vous pouvez «commander par date, rang ()» p>
C'est une idée incroyablement mauvaise. La fonction de rang () devra consulter la table et je sais que SQL Server ne le fusionnera pas dans la requête (pas sûr d'autres DBMS, mais cela me surprendrait).