Question

J'ai un tableau comme celui-ci:

.--------------------------------.
| Name  | XX | Date              |
.--------------------------------.
| N1    | 5  | 2009-05-01        |
| N1    | 10 | 2008-01-08        |
| N2    | 8  | 2009-02-02        |
.________________________________.

Mon résultat devrait être le suivant:

.------------.
| Name  | XX |
.------------.
| N1    | 5  |
| N2    | 8  |
.____________.

Je veux juste les lignes, regroupées par nom mais seulement les plus récentes. Je ne veux pas que la ligne avec XX = 10 dans cet exemple, car la date: 2009-05-01 > 2008-01-08.

Je ne sais pas comment trier par date et le grouper: (

Était-ce utile?

La solution

Pour quoi voulez-vous que le regroupement?

select Name, XX
  from yourTable t1
 where Date = (select MAX(Date)
                 from yourTable t2
                where t1.Name = t2.Name)

Si vous devez ajouter XX pour le dernier jour, alors:

select Name, SUM(XX)
  from yourTable t1
 where Date = (select MAX(Date)
                 from yourTable t2
                where t1.Name = t2.Name)
 group by Name

Autres conseils

SELECT Name, XX FROM myTable GROUP BY Name ORDER BY Date DESC

Vous devrez peut-être mettre des guillemets autour de votre champ de date

`Date`

Désolé mais ces 2 sont tous les deux faux.

Vous devriez

SELECT Name, XX
 FROM t1
 JOIN (SELECT Name, max(date)
        FROM t1
        GROUP BY Name) subquery
   ON t1.Name = subquery.Name AND t1.Date = subquery.Date

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top