comment obtenir les différents enregistrements en fonction d'une date maximale?
Je travaille avec Sql server 2008.j'ai une table contient des colonnes suivantes,
Id,
Name,
Date
cette table contient plusieurs enregistrements pour le même id.je veux obtenir distinctes id ayant date maximale.comment puis-je écrire une requête sql pour cela?
D'abord nous montrer ce que vous avez déjà essayé, vous, s'il vous plaît.
OriginalL'auteur user2514925 | 2014-04-28
Vous devez vous connecter pour publier un commentaire.
Utiliser le ROW_Fonction NUMBER() et de la PARTITION PAR la clause. Quelque chose comme ceci:
OriginalL'auteur jeroenh
Si vous avez besoin seulement
ID
colonne et les autres colonnes ne sont PAS nécessaires, alors vous n'avez pas besoin d'aller avecROW_NUMBER
ouMAX
ou quoi que ce soit d'autre. Vous venez de faire unGroup By
surID
colonne, parce que quelle que soit la date maximale est vous obtiendrez le même ID.Si vous avez besoin d'
ID
etDate
colonnes avec un maximum de date, puis il suffit de faire uneGroup By
surID
colonne et sélectionnez leMax
Date.Si vous avez besoin de toutes les colonnes, mais 1 ligne avoir Max. date alors vous pouvez aller avec
ROW_NUMBER
ouMAX
comme mentionné dans d'autres réponses.OriginalL'auteur sallushan
Une façon, à l'aide de
ROW_NUMBER
:Si plusieurs max-dates sont possibles et que vous voulez tout ce que vous pourriez utiliser
DENSE_RANK
à la place.Voici une vue d'ensemble de sql-server la fonction de classement: http://technet.microsoft.com/en-us/library/ms189798.aspx
Par la voie,
CTE
est un common table expression qui est similaire à un nom de sous-requête. Je l'utilise pour être en mesure de filtrer par lerow_number
. Cette approche permet de sélectionner toutes les colonnes si vous le souhaitez.OriginalL'auteur Rango
Essayer avec
Max(Date)
etGROUP BY
les deux autres colonnes (celles avec de répéter les données)..OriginalL'auteur Milen
Vous pouvez essayer avec ce
OriginalL'auteur Singaravelan
OriginalL'auteur T. Monomach