monsee
Neuer Benutzer
- Beiträge
- 3
Hallo zusammen,
ich habe mich hier neu angemeldet, weil ich mit einem SQL nicht weiterkomme und mir hier Hilfe oder Tipps erhoffe.
Folgendes:
Ich habe eine Tabelle in der Ferientage von Personen stehen (ziel_datum).
Jeder Datensatz entspricht einem Tag, der der user_id zugeordnet ist.
Diese einzelnen Tage können natürlich genehmigt werden.
Nun möchte ich diese Daten in einer View gruppieren und in Von-Bis Variante anzeigen lassen.
Dazu nutze ich einfach die MIN und MAX Funktion auf das ziel_datum für Von und Bis und gruppiere nach user_id, dem Monat des ziel_datums und der Kalenderwoche.
Nun stellt Euch vor, der Benutzer hat 2 Wochen Urlaub im August
Vom 10.08.2015 - 14.08.2015 und vom 17.08.2015 - 21.08.2015.
Mein SQL:
gibt nun folgendes zurück:
user_id: 2 | Monat: 8 | Von: 10.08.2015 | Bis: 14.08.2015 | KW: 33
user_id: 2 | Monat 8 | Von: 17.08.2015 | Bis: 21.08.2015 |KW: 34
Ok. Das sieht super aus, aber, was ist denn jetzt, wenn in der KW 34 bspw. der 19.08.2015 nicht genehmigt wurde. Macht zwar nicht unbedingt Sinn, ich würde es aber gerne berücksichtigen.
(Eine der genehmigt-Spalten braucht also nur 0 sein, dann fällt der Tag raus.)
Mein SQL gibt in diesem Fall aber gleiches Ergebnis wie oben aus.
Theroretisch müsste ich ja jetzt 3 Datensätze erhalten:
user_id: 2 | Monat: 8 | Von: 10.08.2015 | Bis: 14.08.2015 | KW: 33
user_id: 2 | Monat 8 | Von: 17.08.2015 | Bis: 18.08.2015 |KW: 34
user_id: 2 | Monat 8 | Von: 20.08.2015 | Bis: 21.08.2015 |KW: 34
Wie kann ich das lösen?
Besten Dank für Eure Tipps.
monsee
ich habe mich hier neu angemeldet, weil ich mit einem SQL nicht weiterkomme und mir hier Hilfe oder Tipps erhoffe.
Folgendes:
Ich habe eine Tabelle in der Ferientage von Personen stehen (ziel_datum).
Jeder Datensatz entspricht einem Tag, der der user_id zugeordnet ist.
Diese einzelnen Tage können natürlich genehmigt werden.
Nun möchte ich diese Daten in einer View gruppieren und in Von-Bis Variante anzeigen lassen.
Dazu nutze ich einfach die MIN und MAX Funktion auf das ziel_datum für Von und Bis und gruppiere nach user_id, dem Monat des ziel_datums und der Kalenderwoche.
Nun stellt Euch vor, der Benutzer hat 2 Wochen Urlaub im August
Vom 10.08.2015 - 14.08.2015 und vom 17.08.2015 - 21.08.2015.
Mein SQL:
Code:
SELECT
vup.user_id,
MONTH(vup.ziel_datum) Monat,
MIN(vup.ziel_datum) Von,
MAX(vup.ziel_datum) Bis,
DATEPART(wk, vup.ziel_datum) KW
FROM
v_urlaub_personen vup
WHERE
(vup.genehmigt_vorg >= 1
AND vup.genehmigt_personal >= 1)
AND vup.user_id = 2
AND vup.pflichturlaub = 0
GROUP BY
vup.user_id,
MONTH(vup.ziel_datum),
DATEPART(wk, vup.ziel_datum)
gibt nun folgendes zurück:
user_id: 2 | Monat: 8 | Von: 10.08.2015 | Bis: 14.08.2015 | KW: 33
user_id: 2 | Monat 8 | Von: 17.08.2015 | Bis: 21.08.2015 |KW: 34
Ok. Das sieht super aus, aber, was ist denn jetzt, wenn in der KW 34 bspw. der 19.08.2015 nicht genehmigt wurde. Macht zwar nicht unbedingt Sinn, ich würde es aber gerne berücksichtigen.
(Eine der genehmigt-Spalten braucht also nur 0 sein, dann fällt der Tag raus.)
Mein SQL gibt in diesem Fall aber gleiches Ergebnis wie oben aus.
Theroretisch müsste ich ja jetzt 3 Datensätze erhalten:
user_id: 2 | Monat: 8 | Von: 10.08.2015 | Bis: 14.08.2015 | KW: 33
user_id: 2 | Monat 8 | Von: 17.08.2015 | Bis: 18.08.2015 |KW: 34
user_id: 2 | Monat 8 | Von: 20.08.2015 | Bis: 21.08.2015 |KW: 34
Wie kann ich das lösen?
Besten Dank für Eure Tipps.
monsee