Zeilen in einer Spalte mit Datum zusammenfassen

ny_unity

SQL-Guru
Beiträge
195
Hallo zusammen,

ich nutze MySQL PDO und möchte gerne folgendes ausgewertet haben:

Zeile 1
DATUM = 01.08.2022
ORT = Dresden

Zeile 2
DATUM = 02.08.2022
ORT = DRESDEN

Zeile 3
DATUM = 03.08.2022
ORT = LEIPZIG

Zeile 4
DATUM = 04.08.2022
ORT = LEIPZIG

Zeile 5
DATUM = 05.08.2022
ORT = DRESDEN

Ich möchte jetzt folgendes Ergebnis:
Zeitspanne Ort
01.08.2022 - 02.08.2022 DRESDEN
03.08.2022 - 04.08.2022 LEIPZIG
05.08.2022 - 05.08.2022 DRESDEN


Ich hab absolut keinen Anhaltspunkt wie ich es beginnen kann, mit einfachen min und max ist es ja hier nicht getan...

Kann mit bitte wer helfen? ;-)

Danke,

Erik
 
Werbung:
etwas knifflig ...

Code:
postgres=# select * from ny_unity ;
   datum    |   ort   
------------+---------
 2022-08-01 | Dresden
 2022-08-02 | Dresden
 2022-08-03 | Leipzig
 2022-08-04 | Leipzig
 2022-08-05 | Dresden
(5 rows)

postgres=# with tmp as (select *, lag(datum,1) over (order by datum), case when lag(ort,1) over (order by datum) != ort then 1 else 0 end as diff from ny_unity),tmp2 as(select datum, sum(diff) over (order by datum) from tmp group by datum,diff), tmp3 as (select min(datum), max(datum) from tmp2 group by sum) select tmp3.min as von, tmp3.max as bis, ny_unity.ort from tmp3 left join ny_unity on tmp3.min=datum;
    von     |    bis     |   ort   
------------+------------+---------
 2022-08-01 | 2022-08-02 | Dresden
 2022-08-03 | 2022-08-04 | Leipzig
 2022-08-05 | 2022-08-05 | Dresden
(3 rows)

postgres=#

Das nach MySQL zu portieren dürfte allerdings auch knifflig werden ...
 
ich glaube meine MySQL Version ist zu alt, kann ich die irgendwo nachlesen, ohne beim Provider zu fragen?
laut phpinfo habe ich "mysqlnd 5.0.12-dev - 20150407" als pdo treiber... und mysqlnd und mysqli...
 
selbst die with tables funktionieren nicht, hab extra nachgesehen in dem wiki... ich frage morgen beim Provider nach, evtl. sind einige Funtkionen gesperrt
SQL:
with tb_test as (
    SELECT * from tb_dienstreisezeiten
    )
 select * from tb_test

bringt Fehler:

Fehler​

Statische Analyse:

1 Fehler wurden während der Analyse gefunden.



  1. Unerkannte Statement-Typ. (near "with" at position 0)


SQL-Befehl: Dokumentation

with tb_test as ( SELECT * from tb_dienstreisezeiten ) select * from tb_test

MySQL meldet: Dokumentation

#1064 - Fehler in der SQL-Syntax. Bitte die korrekte Syntax im Handbuch nachschlagen bei 'tb_test as (
SELECT * from tb_dienstreisezeiten
)
select * from tb_t' in Zeile 1
 
Zuletzt bearbeitet:
Du könnetest das mit einen Subquery lösen, aber dein Struktur ist nicht richtig.
Sollten mehre User gleichzeitig was eintragen klappt das nicht mehr.
Füge noch eine Spalte hinzu die für die Dienstreise steht, irdeneine ID die einmalig ist.
 
Zuletzt bearbeitet:
Werbung:
Du könnetest das mit einen Subquery lösen, aber dein Struktur ist nicht richtig.
Sollten mehre User gleichzeitig was eintragen klappt das nicht mehr.
Füge noch eine Spalte hinzu die für die Dienstreise steht, irdeneine ID die einmalig ist.
Das habe ich, hatte ich für die vereinfachte Anschauung nicht mit gepostet

Workaround gut und schön, aber es muss ja ein Grund geben wieso CTE oder die Window Funktionen nicht gehen
 
Zurück
Oben