J'ai un tableau que je veux obtenir la dernière entrée pour chaque groupe. Voici le tableau:
DocumentStatusLogs
Tableau
|ID| DocumentID | Status | DateCreated |
| 2| 1 | S1 | 7/29/2011 |
| 3| 1 | S2 | 7/30/2011 |
| 6| 1 | S1 | 8/02/2011 |
| 1| 2 | S1 | 7/28/2011 |
| 4| 2 | S2 | 7/30/2011 |
| 5| 2 | S3 | 8/01/2011 |
| 6| 3 | S1 | 8/02/2011 |
La table seront regroupés par DocumentID et triés par DateCreated dans l'ordre décroissant. Pour chaque DocumentID, je veux obtenir de l'état le plus récent.
Mon préféré de sortie:
| DocumentID | Status | DateCreated |
| 1 | S1 | 8/02/2011 |
| 2 | S3 | 8/01/2011 |
| 3 | S1 | 8/02/2011 |
-
Est-il une fonction d'agrégation pour obtenir seulement le haut de chaque groupe? Voir le code pseudo-
GetOnlyTheTop
ci-dessous:select DocumentID, GetOnlyTheTop(Status), GetOnlyTheTop(DateCreated) from DocumentStatusLogs group by DocumentID order by DateCreated desc
Si une telle fonction n'existe pas, est il possible que je puisse atteindre la sortie que je veux?
- Ou à la première place, cela pourrait être causé par unnormalized base de données? Je pense, depuis que je suis à la recherche juste une ligne, devraient -
status
également se trouver dans la table parent?
Veuillez consulter la table parent pour plus d'informations:
Courant Documents
Tableau
| DocumentID | Title | Content | DateCreated |
| 1 | TitleA | ... | ... |
| 2 | TitleB | ... | ... |
| 3 | TitleC | ... | ... |
Si la table parent et d'être comme ça pour que je puisse facilement accéder à son statut?
| DocumentID | Title | Content | DateCreated | CurrentStatus |
| 1 | TitleA | ... | ... | s1 |
| 2 | TitleB | ... | ... | s3 |
| 3 | TitleC | ... | ... | s1 |
Merci à l'avance!
Mise à JOUR J'ai juste appris à utiliser "appliquer", ce qui rend plus facile pour résoudre ces problèmes.