Thema: Delphi Max(Datum) Min(Datum)

Einzelnen Beitrag anzeigen

Metallicwar

Registriert seit: 5. Feb 2010
Ort: Bad Kissingen
293 Beiträge
 
Delphi XE Architect
 
#13

AW: Max(Datum) Min(Datum)

  Alt 6. Mai 2013, 15:54
Ich steh etwas auf dem Schlauch.
Ich kriege mit dem SQL zu Beginn des Threads meine Ergebnismenge zwei mal.
Code:
01.02.2013
02.02.2013
...
28.02.2013
01.02.2013
02.02.2013
28.02.2013
Code:
SELECT ma_s.ID, ma_s.Personalnummer as Personalnr, ma_s.Nachname as Name,
       ma_s.Vorname, bd.Datum, bd.Kuerzel, bd.Feiertag, a.Bezeichnung,
       IIF(be.Pause = 0, null, ZMIF.MinToHour(be.Pause)) AS PauseH,
       ZMIF.MinToIHour(be.Pause) as PauseIH,
       IIF(be.Tagesbrutto = 0, null, ZMIF.MinToHour(be.Tagesbrutto)) AS TagesbruttoH,
       ZMIF.MinToIHour(be.Tagesbrutto) as TagesbruttoIH,
       IIF(be.Mehrarbeit = 0, null, ZMIF.MinToHour(be.Mehrarbeit)) AS MehrarbeitH,
       ZMIF.MinToIHour(be.Mehrarbeit) as MehrarbeitIH, b.BuchungsArt,
       min(b.Me1) as Me1, max(b.Me2) as Me2, b.Flag
  FROM MA_Stammdaten ma_s
  LEFT OUTER JOIN Abteilungen a
    ON ma_s.ID_Abteilungen = a.ID
  LEFT OUTER JOIN Buchungsdatei bd
    ON ma_s.ID = bd.ID_MA_Stammdaten
  LEFT OUTER JOIN Buchungen b
    ON bd.ID_MA_Stammdaten = b.ID_MA_Stammdaten
   AND bd.Datum = b.Datum
  LEFT OUTER JOIN FEHLTAGEDEFINITION ftd
    ON bd.Fehltag = ftd.Kuerzel
  LEFT OUTER JOIN B_Ergebnisse be
    ON bd.ID = be.ID_Buchungsdatei
 WHERE ma_s.ID IN (3)
   and Month(bd.Datum) = 2
   and Year(bd.Datum) = 2013 
 GROUP BY 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18
UNION ALL
SELECT ma_s.ID, ma_s.Personalnummer as Personalnr, ma_s.Nachname as Name,
       ma_s.Vorname, bd.Datum, bd.Kuerzel, bd.Feiertag, a.Bezeichnung,
       IIF(be.Pause = 0, null, ZMIF.MinToHour(be.Pause)) AS PauseH,
       ZMIF.MinToIHour(be.Pause) as PauseIH,
       IIF(be.Tagesbrutto = 0, null, ZMIF.MinToHour(be.Tagesbrutto)) AS TagesbruttoH,
       ZMIF.MinToIHour(be.Tagesbrutto) as TagesbruttoIH,
       IIF(be.Mehrarbeit = 0, null, ZMIF.MinToHour(be.Mehrarbeit)) AS MehrarbeitH,
       ZMIF.MinToIHour(be.Mehrarbeit) as MehrarbeitIH, b.BuchungsArt,
       b.Me1 as Me1, b.Me2 as Me2, b.Flag
  FROM MA_Stammdaten ma_s
  LEFT OUTER JOIN Abteilungen a
    ON ma_s.ID_Abteilungen = a.ID
  LEFT OUTER JOIN Buchungsdatei bd
    ON ma_s.ID = bd.ID_MA_Stammdaten
  LEFT OUTER JOIN Buchungen b
    ON bd.ID_MA_Stammdaten = b.ID_MA_Stammdaten
   AND bd.Datum = b.Datum
  LEFT OUTER JOIN FEHLTAGEDEFINITION ftd
    ON bd.Fehltag = ftd.Kuerzel
  LEFT OUTER JOIN B_Ergebnisse be
    ON bd.ID = be.ID_Buchungsdatei
 WHERE ma_s.ID IN (3)
   and Month(bd.Datum) = 2
   and Year(bd.Datum) = 2013
 ORDER By ma_s.ID
Kann mir nicht erklären warum !?!

Außerdem werden Pausezeiten nicht einzeln aufgelistet sondern auch nur die erste Buchung und die letzte.
Code:
Arbeitszeit: 07:00 - 16:15
Pause:      11:49 - 12:31
Arbeitszeit: 17:00 - 20:00
Pause:      18:00 - 18:30
SQL Ergebnis ..
Code:
Arbeitszeit: 07:00 - 20:00
Pause:      11:49 - 18:30
.. was ja falsch ist, da die Pausen nicht zusammengefasst werden sollen.
  Mit Zitat antworten Zitat