Hallo zusammen,
ich benötige für eine Planung eine bestimmte Absatzmenge diverser Kunden aus einem bestimmten Bestellzeitraum. Die Absatzmenge ist aber pro Kunde begrenzt.
Beispiel mit zwei Kunden (in echt ca. 300 Kunden):
Kunde_1 hat eine Mengenbegrezung von 50, Kunde_2 von 95. Die Begrezungsanzahl ergibt sich aus einer separaten Tabelle.
Wird im SELECT bei dem Kunden_1 eine Menge von 60 zurückgegeben, sollen nur die ersten 50 aufsteigend nach dem Bestelldatum berücksichtigt werden, bei dem Kunden_2 ensprechend nur die ersten 95. Nachfolgender Beispielselect soll das ganze verdeutlichen.
Ich habe versucht die FETCH FIRST Anweisung in einen SELECT einzubinden, was natürlich nicht funktioniert.
Aber wie lässt sich das realisieren?
Hinweis: Datenbank DB2
Programm: DBVisualizer 9.0.8
Mfg. Andy
Tablle aus der die Mengenbegrenzung ausgelesen werden soll.
DECLARE GLOBAL TEMPORARY TABLE
SESSION.TB1
(
TB1_cust_no CHAR (5),
TB1_orde INTEGER
)
ON
COMMIT PRESERVE ROWS;
INSERT INTO SESSION.TB1 VALUES ('Kunde_1', 50);
INSERT INTO SESSION.TB1 VALUES ('Kunde_2, 95);
Select auf die Datenbank
SELECT
cust_no AS Kunde,
artik_no AS Artikel_Nr,
artik_bez AS Artikel_Bezeichnung,
artik_Preis AS Preis,
orde_dat As Bestelldatum
FROM prod.orde
JOIN prod.artikel ON artik_orde_key = orde_key
JOIN prod.cust ON cust_key = orde_cust_key
JOIN SESSION.TB1 ON AZ_cust_no = cust_no
WHERE DATE(orde_dat) BETWEEN '2013-01-01' AND '2013-08-31'
ORDER BY orde_dat
FETCH FIRST (SELECT TB1_orde
FROM SESSION.TB1
WHERE cust_no = TB1_cust_no)
ROWS only
FOR read only with ur;
ich benötige für eine Planung eine bestimmte Absatzmenge diverser Kunden aus einem bestimmten Bestellzeitraum. Die Absatzmenge ist aber pro Kunde begrenzt.
Beispiel mit zwei Kunden (in echt ca. 300 Kunden):
Kunde_1 hat eine Mengenbegrezung von 50, Kunde_2 von 95. Die Begrezungsanzahl ergibt sich aus einer separaten Tabelle.
Wird im SELECT bei dem Kunden_1 eine Menge von 60 zurückgegeben, sollen nur die ersten 50 aufsteigend nach dem Bestelldatum berücksichtigt werden, bei dem Kunden_2 ensprechend nur die ersten 95. Nachfolgender Beispielselect soll das ganze verdeutlichen.
Ich habe versucht die FETCH FIRST Anweisung in einen SELECT einzubinden, was natürlich nicht funktioniert.
Aber wie lässt sich das realisieren?
Hinweis: Datenbank DB2
Programm: DBVisualizer 9.0.8
Mfg. Andy
Tablle aus der die Mengenbegrenzung ausgelesen werden soll.
DECLARE GLOBAL TEMPORARY TABLE
SESSION.TB1
(
TB1_cust_no CHAR (5),
TB1_orde INTEGER
)
ON
COMMIT PRESERVE ROWS;
INSERT INTO SESSION.TB1 VALUES ('Kunde_1', 50);
INSERT INTO SESSION.TB1 VALUES ('Kunde_2, 95);
Select auf die Datenbank
SELECT
cust_no AS Kunde,
artik_no AS Artikel_Nr,
artik_bez AS Artikel_Bezeichnung,
artik_Preis AS Preis,
orde_dat As Bestelldatum
FROM prod.orde
JOIN prod.artikel ON artik_orde_key = orde_key
JOIN prod.cust ON cust_key = orde_cust_key
JOIN SESSION.TB1 ON AZ_cust_no = cust_no
WHERE DATE(orde_dat) BETWEEN '2013-01-01' AND '2013-08-31'
ORDER BY orde_dat
FETCH FIRST (SELECT TB1_orde
FROM SESSION.TB1
WHERE cust_no = TB1_cust_no)
ROWS only
FOR read only with ur;