Ich habe eine Tabelle mit positions
Diese Tabelle ist wie folgt:Einzelergebnis für user_id durch mehrere Daten sortiert
user_id | current | started_at | finished_at
2 | false | 10-07-2016 | 02-08-2016
1 | false | 19-07-2016 | 27-07-2016
1 | true | 29-07-2016 | null
3 | true | 20-07-2016 | null
3 | false | 01-07-2016 | 18-07-2016
ich diese Tabelle Sortier einen Fall entweder mit dem started_at
oder finished_at
Datum zu verwenden, je nach ob current
wahr oder falsch ist
SELECT *
FROM positions
ORDER BY
CASE
WHEN current = true
THEN started_at
ELSE finished_at
END
DESC
Dies funktioniert wie erwartet, aber jetzt will ich nur die erste Zeile für jeden user_id
Also in meinem Beispiel Daten möchte ich nur folgendes zurückgegeben haben.
user_id | current | started_at | finished_at
2 | false | 10-07-2016 | 02-08-2016
1 | true | 29-07-2016 | null
3 | true | 20-07-2016 | null
ich nachdachte konnte mit einem GROUP BY
getan werden, aber ich kann es nicht ohne Fehler zu arbeiten oder vielleicht brauche ich eine Sub-Abfrage, ich bin nicht sicher.
Ist "nur die erste Zeile" gleich "WHERE current = true"? – Razzka
Entschuldigung, das ist ein Fehler, korrigiert – Rob