Ich habe Wiederholungs Zeilen in einer Tabelle mit mehreren Terminen:SQL reduziert dates „starten - Ende“ reichen
ID STATE DATE
----------------------------
id01 connected 2015-04-04
id01 connected 2015-04-05
id01 connected 2015-04-08
id01 disconect 2015-04-11
id01 disconect 2015-04-12
id01 connected 2015-04-13
ich eine Abfrage mit „Startdatum“ und „Enddatum“, mit diesem Ergebnis will:
ID STATE START DATE END DATE
----------------------------------------
id01 connected 2015-04-04 2015-04-10
id01 disconect 2015-04-11 2015-04-12
id01 connected 2015-04-13 XXXXXXXXXX
Das letzte „Enddatum“ es ist nicht wichtig (letzter Wert, null, jetzt() ...)
Das wichtigste ist, Änderungsdatum erfassen (in diesem Beispiel keine Zeile für 2015- 04-10, und der gleiche Zustand passierte in 2015-04-13).
Mögliche Lösung? (Nicht gültig)
SELECT ID, STATE, MIN(date), MAX(date)
FROM TABLE
GROUP BY ID, STATE;
ist ungültig, da Intervalle fusionieren:
ID STATE START DATE END DATE
----------------------------------------
id01 connected 2015-04-04 XXXXXXXXXX
id01 disconect 2015-04-11 2015-04-12
Abfrage in Impala laufen hat (ähnlich SQL92)
Erstaunlich ... einfach und elegant ... ein Problem für mich: das erste Ergebnis , das Enddatum mit Ihrer Anfrage ist 2015-04-08, nicht 2015-04-10. Allerdings eine sehr gute Lösung, Thx – Kzas
Lösung in der Frage veröffentlichen. Danke Gordon – Kzas