Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.163 Beiträge
 
Delphi 12 Athens
 
#14

AW: Ist sowas mit SQL machbar?

  Alt 4. Mär 2016, 22:23
Hatte erst meine Überlegungen so angefangen
SQL-Code:
SELECT PersNr, min(BeginnDatum+BeginnUhrzeit) AS Beginn, max(EndeDatum+EndeUhrzeit) AS Ende, Fehlart,
  lag(PersNr || Fehlart, ***) OVER (
    --PARTITION BY PersNr, Fehlart
    --ORDER BY EndeDatum+EndeUhrzeit
  ) AS GroupID
GROUP BY GroupID
ORDER BY PersNr, Fehlart, BeginnDatum, BeginnUhrzeit
aber das mit den WindowFunctions ist nicht so mein Ding.

Also dann doch mit den guten alten SubSelects weiterüberlegt.
SQL-Code:
SELECT PersNr, min(BeginnDatum+BeginnUhrzeit) AS Beginn, max(EndeDatum+EndeUhrzeit) AS Ende, Fehlart,
  (
    WITH RECURSIVE Temp(Datum) AS (
      SELECT Abwesenheiten.BeginnDatum
      UNION ALL
      SELECT Loop.BeginnDatum
      FROM Abwesenheiten AS Loop
      WHERE Loop.BeginnDatum = Datum - 1
        AND Loop.PersNr = Abwesenheiten.PersNr
        AND Loop.Fehlart = Abwesenheiten.Fehlart
    )
    SELECT min(Datum) FROM Temp;
  ) AS GroupID
FROM Abwesenheiten
GROUP BY GroupID
ORDER BY PersNr, Fehlart, BeginnDatum, BeginnUhrzeit
>> nur grobe ungetestete Gedankengänge <<
Im Prinzip irgendwie den zuzammengehörigen Datensätzen eine Kennung verpassen und da ein GROUP BY drauf anwenden.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 4. Mär 2016 um 22:26 Uhr)
  Mit Zitat antworten Zitat