Erwin Pflaumenmus
Neuer Benutzer
- Beiträge
- 2
Hallo zusammen,
bei dem folgenden Problem habe ich irgendwo einen Denkfehler und komme nicht weiter:
Ich brauche eine Auswertung der Palettenanzahl, die Pro Tag in einem Regal stand.
Dieser Zeitraum liegt zwischen Neuanlage der Wareneingangsposition im Vor-WE (w.time_neu) und Neuanlage der Entsprechenden Wareneingangsbewegung des End-WE (b.time_neu). Beim Vor-WE werden noch keine Ladeeinheiten gebildet.
Gezählt wird die Anzahl der eindeutigen Ladeeinheiten b.typ_le_1_an = 'PAL' beim End-WE.
Die Anzahl ist somit erst zum Zeitpunkt des End-WE bekannt, wo die Paletten nicht mehr im Regal stehen und soll rückwirkend für die Tage seit dem Vor-WE gezählt werden.
Beispielsituation:
Es gibt 2 Wareneingänge, die am 30.05. gebucht wurden.
Zu WE A wurden am 30.05. 4 Paletten gebildet.
Zu WE B wurden am 02.06. 12 Paletten gebildet.
Es waren demnach am 30.05. 4+12 Paletten im Regal und bis zum 02.06. noch 12 Paletten.
Meine Abfrage (abgefragt am 02.06.) gibt mir nur für den 30.05. die 16 Paletten aus, für die anderen Tage 0.
WITH min_max_dates AS (
SELECT
TO_CHAR(MIN(w.time_neu), 'YYYYMMDD') AS min_time_str,
TO_CHAR(MAX(w.time_neu), 'YYYYMMDD') AS max_time_str
FROM
bewegungen b
JOIN
wepos w ON w.nr_we = b.nr_we_an
)
SELECT
TO_CHAR(Datum, 'YYYYMMDD') AS Datum,
COUNT(DISTINCT b.nr_le_1_an) AS PAL_im_Regal
FROM (
SELECT
TO_DATE(min_max_dates.min_time_str, 'YYYYMMDD') + LEVEL - 1 AS Datum
FROM
min_max_dates
CONNECT BY
TO_DATE(min_max_dates.min_time_str, 'YYYYMMDD') + LEVEL - 1 <= TO_DATE(min_max_dates.max_time_str, 'YYYYMMDD')
)
LEFT JOIN bewegungen b ON TO_CHAR(b.time_neu, 'YYYYMMDD') = TO_CHAR(Datum, 'YYYYMMDD')
JOIN wepos w ON w.nr_we = b.nr_we_an
WHERE
b.art_bew IN ('WEBA', 'WEGS', 'WEPF', 'WEXD', 'WERE', 'WEQS', 'WEPM', 'WEVP', 'WEVE')
AND b.typ_le_1_an = 'PAL'
AND b.nr_we_pos_an = w.nr_we_pos
AND TO_CHAR(b.time_neu, 'YYYYMM') >= '202505' -- kommt später weg, soll Anzahl Ergebnisse reduzieren
GROUP BY TO_CHAR(Datum, 'YYYYMMDD')
HAVING COUNT(DISTINCT b.nr_le_1_an) > 0
bei dem folgenden Problem habe ich irgendwo einen Denkfehler und komme nicht weiter:
Ich brauche eine Auswertung der Palettenanzahl, die Pro Tag in einem Regal stand.
Dieser Zeitraum liegt zwischen Neuanlage der Wareneingangsposition im Vor-WE (w.time_neu) und Neuanlage der Entsprechenden Wareneingangsbewegung des End-WE (b.time_neu). Beim Vor-WE werden noch keine Ladeeinheiten gebildet.
Gezählt wird die Anzahl der eindeutigen Ladeeinheiten b.typ_le_1_an = 'PAL' beim End-WE.
Die Anzahl ist somit erst zum Zeitpunkt des End-WE bekannt, wo die Paletten nicht mehr im Regal stehen und soll rückwirkend für die Tage seit dem Vor-WE gezählt werden.
Beispielsituation:
Es gibt 2 Wareneingänge, die am 30.05. gebucht wurden.
Zu WE A wurden am 30.05. 4 Paletten gebildet.
Zu WE B wurden am 02.06. 12 Paletten gebildet.
Es waren demnach am 30.05. 4+12 Paletten im Regal und bis zum 02.06. noch 12 Paletten.
Meine Abfrage (abgefragt am 02.06.) gibt mir nur für den 30.05. die 16 Paletten aus, für die anderen Tage 0.
WITH min_max_dates AS (
SELECT
TO_CHAR(MIN(w.time_neu), 'YYYYMMDD') AS min_time_str,
TO_CHAR(MAX(w.time_neu), 'YYYYMMDD') AS max_time_str
FROM
bewegungen b
JOIN
wepos w ON w.nr_we = b.nr_we_an
)
SELECT
TO_CHAR(Datum, 'YYYYMMDD') AS Datum,
COUNT(DISTINCT b.nr_le_1_an) AS PAL_im_Regal
FROM (
SELECT
TO_DATE(min_max_dates.min_time_str, 'YYYYMMDD') + LEVEL - 1 AS Datum
FROM
min_max_dates
CONNECT BY
TO_DATE(min_max_dates.min_time_str, 'YYYYMMDD') + LEVEL - 1 <= TO_DATE(min_max_dates.max_time_str, 'YYYYMMDD')
)
LEFT JOIN bewegungen b ON TO_CHAR(b.time_neu, 'YYYYMMDD') = TO_CHAR(Datum, 'YYYYMMDD')
JOIN wepos w ON w.nr_we = b.nr_we_an
WHERE
b.art_bew IN ('WEBA', 'WEGS', 'WEPF', 'WEXD', 'WERE', 'WEQS', 'WEPM', 'WEVP', 'WEVE')
AND b.typ_le_1_an = 'PAL'
AND b.nr_we_pos_an = w.nr_we_pos
AND TO_CHAR(b.time_neu, 'YYYYMM') >= '202505' -- kommt später weg, soll Anzahl Ergebnisse reduzieren
GROUP BY TO_CHAR(Datum, 'YYYYMMDD')
HAVING COUNT(DISTINCT b.nr_le_1_an) > 0
Zuletzt bearbeitet: