Guten Tag,
zunächst einmal hoffe ich, dass ich hier im richtigen Forum bin.
Ich habe folgendes Problem.
Mitarbeiter können in einen Kalender Ihre Bereitschaft eintragen. Pro Tag sind dies 2 Blöcke. Einmal von 0-7:29 Uhr und einmal von 7:30-23:59 Uhr. Die Bereitschaft geht von Montags 7:30 bis zum folgenden Montag 7:29. Das ergibt 14 Datensätze pro Mitarbieter pro Woche. Es kann jetzt vorkommen, dass an einem Tag getauscht wird und ein anderer Mitarbeiter die Bereitschaft übernimmt. Generell haben mindestens 3 Mitarbeiter gleichzeitig Bereitschaft. Soweit zum Hintergrund.
Lasse ich mir jetzt die Datensätze ausgeben. Erhalte ich bei 3 Leuten à 14 Datensätze 42 Zeilen. Als Spalten habe ich dann Mitarbeitername, VonZeit und BisZeit.
Ich möchte jetzt, dass alle Datensätze eines Mitarbeiters zusammengefasst werden und unter VonZeit die Anfangszeit des ersten Datensatzes steht und unter BisZeit der Endzeitpunkt des letzten Datensatzes. Insgesamt sollen also am Ende nur noch 3 Datensätze angezeigt werden. Für jeden Mitarbeiter einer. Das habe ich über folgenden Code gelöst:
Probem jetzt ist, dass wenn ein Mitarbeiter einmal eine Bereitschaft mit einem vierten Mitarbeiter tauscht. Ich möchte dann 5 Zeilen ausgegeben bekommen:
Mitarbeiter A | 01.01.17 7:30 | 03.01.17 07:29
Mitarbeiter B | 03.01.17 07:30 | 04.01.17 07:29
Mitarbeiter A | 04.01.17 7:30 | 07.01.17 07:29
Mitarbeiter C | 01.01.17 7:30 | 07.01.17 07:29
Mitarbeiter D | 01.01.17 7:30 | 07.01.17 07:29
Stattdessen gibt er das aus:
Mitarbeiter A | 01.01.17 7:30 | 07.01.17 07:29
Mitarbeiter B | 03.01.17 07:30 | 04.01.17 07:29
Mitarbeiter C | 01.01.17 7:30 | 07.01.17 07:29
Mitarbeiter D | 01.01.17 7:30 | 07.01.17 07:29
Ich vertsehe warum er das ausgibt, da er die Sätze gruppiert. Kann mir einer sagen, wie der Code aussehen soll, damit er es so ausgibt, wie ich es möchte?
Vielen Dank
Gruß,
Mattze
zunächst einmal hoffe ich, dass ich hier im richtigen Forum bin.
Ich habe folgendes Problem.
Mitarbeiter können in einen Kalender Ihre Bereitschaft eintragen. Pro Tag sind dies 2 Blöcke. Einmal von 0-7:29 Uhr und einmal von 7:30-23:59 Uhr. Die Bereitschaft geht von Montags 7:30 bis zum folgenden Montag 7:29. Das ergibt 14 Datensätze pro Mitarbieter pro Woche. Es kann jetzt vorkommen, dass an einem Tag getauscht wird und ein anderer Mitarbeiter die Bereitschaft übernimmt. Generell haben mindestens 3 Mitarbeiter gleichzeitig Bereitschaft. Soweit zum Hintergrund.
Lasse ich mir jetzt die Datensätze ausgeben. Erhalte ich bei 3 Leuten à 14 Datensätze 42 Zeilen. Als Spalten habe ich dann Mitarbeitername, VonZeit und BisZeit.
Ich möchte jetzt, dass alle Datensätze eines Mitarbeiters zusammengefasst werden und unter VonZeit die Anfangszeit des ersten Datensatzes steht und unter BisZeit der Endzeitpunkt des letzten Datensatzes. Insgesamt sollen also am Ende nur noch 3 Datensätze angezeigt werden. Für jeden Mitarbeiter einer. Das habe ich über folgenden Code gelöst:
Code:
select :VERSION as version,
:VON as Von_eingabe,
:BIS as bis_eingabe,
z.mitarbeiter as Mitarbeitername,
MIN(z.vondat) as von,
MAX(z.bisdat) as bis
FROM buchungoab z
where(
(z.vondat between to_date(:Von, 'DD.MM.YYYY HH:MI') and to_date(:Bis, 'DD.MM.YYYY HH:MI'))
or (z.bisdat between to_date(:Von, 'DD.MM.YYYY HH:MI') and to_date(:Bis, 'DD.MM.YYYY HH:MI'))
or (z.vondat <= to_date(:Von, 'DD.MM.YYYY HH:MI') and (z.bisdat >= to_date(:Bis, 'DD.MM.YYYY HH:MI')))
)
GROUP BY z.mitarbeiter
Probem jetzt ist, dass wenn ein Mitarbeiter einmal eine Bereitschaft mit einem vierten Mitarbeiter tauscht. Ich möchte dann 5 Zeilen ausgegeben bekommen:
Mitarbeiter A | 01.01.17 7:30 | 03.01.17 07:29
Mitarbeiter B | 03.01.17 07:30 | 04.01.17 07:29
Mitarbeiter A | 04.01.17 7:30 | 07.01.17 07:29
Mitarbeiter C | 01.01.17 7:30 | 07.01.17 07:29
Mitarbeiter D | 01.01.17 7:30 | 07.01.17 07:29
Stattdessen gibt er das aus:
Mitarbeiter A | 01.01.17 7:30 | 07.01.17 07:29
Mitarbeiter B | 03.01.17 07:30 | 04.01.17 07:29
Mitarbeiter C | 01.01.17 7:30 | 07.01.17 07:29
Mitarbeiter D | 01.01.17 7:30 | 07.01.17 07:29
Ich vertsehe warum er das ausgibt, da er die Sätze gruppiert. Kann mir einer sagen, wie der Code aussehen soll, damit er es so ausgibt, wie ich es möchte?
Vielen Dank
Gruß,
Mattze