Sélection de la version la plus récente et spécifique dans chaque groupe d'enregistrements, pour plusieurs groupes

Le problème:
J'ai une table qui enregistre les lignes de données dans foo. Chaque fois que la ligne est mise à jour, une nouvelle ligne est insérée avec un numéro de révision. Le tableau ressemble à:

id  rev field
1   1   test1
2   1   fsdfs
3   1   jfds
1   2   test2

Noter que dans le tableau du dernier enregistrement est une version plus récente de la première ligne.

Personne ne sait d'une manière efficace à la requête pour la version la plus récente des lignes, et une version spécifique d'enregistrements? Par exemple, une requête pour rev=2 serait de retour le 2, 3 et 4 rangs (pas remplacé le 1er rang), alors que les requêtes pour rev=1 les rendements de ces lignes avec rev <= 1 et en cas de duplication de l'ids, l'une avec le plus haut numéro de révision est choisi (record: 1, 2, 3).

Je ne suis pas sûr si cela est encore possible dans SQL Server...

Je préférerais pas de retourner le résultat de façon itérative.

source d'informationauteur orange