Comment faire pour joindre la table pour lui-même et sélectionnez max les valeurs dans SQL

J'ai un contracts table:

contractId    date       price     partId
1             20120121   10        1
2             20110130   9         1
3             20130101   15        2
4             20110101   20        2

Le contrat avec la plus grande date étant le contrat actif (ne me blâmez pas, je blâme d'infor pour la création de xpps)

J'ai besoin de créer une requête pour voir uniquement actif contrats (un contrat par une partie, le contrat avec la plus grande date).

Donc le résultat de la requête devrait ressembler à ceci:

contractId    date       price     partId
1             20120121   10        1
3             20130101   15        2

Je suis à court d'idées ici, j'ai essayé l'auto jointure de la table, j'ai essayé de fonctions d'agrégation, mais je ne peux pas le comprendre. Si quelqu'un aurait une idée, merci de les partager avec moi..

Ce sgbdr comme MySql ou Sql-Server que vous utilisez?
query est tout simplement parfait, avec juste un seul r ...
Je suis désolé pour cette erreur, je suis un peu fatigué assis toute la journée devant émulateur telnet à essayer de comprendre ce querry.. je suis en utilisant le DB/2 sur IBM as/400.
Basé sur les tags, le sgbd est officiellement "DB2 for i". (Le système qui est actuellement connu comme IBM PowerSystem exécution d'IBM-je. Ils n'ont pas vendu un as/400 depuis 2000.)

OriginalL'auteur Jakub Konop | 2012-11-29