2016-03-31 13 views
-2

Ich habe die folgende Tabelle. Ich muss nach fromdate, gruppieren und Ergebnis mit Minimum todate für jedes fromdate erhalten. Wie kann ich es tun?Gruppierung Tabelle auf der Grundlage des Datums

|------|--------------|--------------| 
| id | fromdate |  todate | 
|------|--------------|--------------| 
| 1 | 2016-03-01 | 2016-01-05 | 
| 2 | 2016-03-01 | 2016-01-11 | 
| 3 | 2016-03-01 | 2016-01-12 | 
| 4 | 2016-03-05 | 2016-01-05 | 
| 5 | 2016-03-05 | 2016-01-11 | 
| 6 | 2016-03-06 | 2016-01-04 | 
| 7 | 2016-03-06 | 2016-01-17 | 
| 8 | 2016-03-06 | 2016-01-19 | 
| 9 | 2016-03-09 | 2016-01-04 | 
|10 | 2016-03-09 | 2016-01-11 | 
|------|--------------|--------------| 

Ich habe dies versucht, aber es gibt mir nicht das erwartete Ergebnis:

Select * from test group by fromdate order by fromdate, todate 
+0

Bitte lesen Sie [fragen]. Bearbeiten Sie die Frage und fügen Sie einen [mcve] hinzu. –

+0

Teilen Sie alle Fragen, die Sie vielleicht versucht haben? – Daenarys

+0

jeder Versuch gemacht? – 1000111

Antwort

1

Ganz einfach:

SELECT fromDate, MIN(toDate) as minToDate FROM theTable GROUP BY fromDate 
+0

Hoppla! Ich war nur 19 Sekunden nach dir! –

+0

danke .. das ist, was ich wollte. –

1

Sie min Aggregatfunktion verwenden können. Das in den MySQL-Dokumenten angegebene Beispiel ähnelt dem, was Sie benötigen.

mysql> SELECT student_name, MIN(test_score), MAX(test_score) 
    ->  FROM student 
    ->  GROUP BY student_name; 

für Ihren Fall Also, es wird sein:

SELECT 
    fromdate, MIN(todate) 
FROM 
    mytable 
GROUP BY fromdate; 

Werfen Sie einen Blick auf die akzeptierte Antwort dieser SO question, die zeigt, wie Mindest Datum zu erhalten, was natürlich min() verwendet.

Verwandte Themen