Akku
12-06-08, 10:19
Hallo,
habe folgende Aufgabe zu lösen:
ich brauche aus einer Auftragsdatei zu jedem Produkt den jeweils ersten Satz (mit allen Auftragsdaten) mit dem zweit-aktuellsten Liefertermin.
Produkt LiefTerm A Auftrag
SK-V59 2004-11-20 V P0-0054397
SK-V59 2004-11-20 V P0-0054398
SK-V59* 2005-02-22 V QR-0054744
SK-V59* 2004-10-08 V 84-0054295
SK-V590000 2010-01-01 V U7-0055405
SK-V590000 2010-01-01 V V9-0055408
SK-V590000 2008-06-30 V YK-0051945
SK-V590000 2008-06-30 V YL-0052148
SK-V590000 2008-06-25 V YK-0051946
Habe folgende Lösung dafür:
with A AS (
select dense_rank() over (
partition by Produkt
order by Produkt, LiefTerm desc)
as RankNo,
Produkt, LiefTerm, A, Auftrag
from VO3M1),
B as (
select row_number() over (
partition by Produkt, RankNo
order by Produkt, RankNo) as LinNo,
RankNo, Produkt, LiefTerm, A, Auftrag
from A)
select * from B
where RankNo = 2 and LinNo = 1
Direkt ausgeführt, funktioniert es. Aber eine VIEW lässt sich damit nicht erzeugen: SQL-Systemfehler
( Probleme mit "RankNo" in der zweiten CET siehe Joblog )
Ausschnitt aus Joblog:
1 Benutzer-Trace-Puffer gelöscht.
Sortierfeld RANKNO in Format SAVO3 nicht gefunden.
SQL-Systemfehler.
Datei QAP0ZDMP in Bibliothek QTEMP bereits vorhanden.
Gibt es eine Erklärung für dieses Problem oder vielleicht ein PTF?
Oder bleibt mir nichts anderes übrig als das SQL umzuschreiben?
habe folgende Aufgabe zu lösen:
ich brauche aus einer Auftragsdatei zu jedem Produkt den jeweils ersten Satz (mit allen Auftragsdaten) mit dem zweit-aktuellsten Liefertermin.
Produkt LiefTerm A Auftrag
SK-V59 2004-11-20 V P0-0054397
SK-V59 2004-11-20 V P0-0054398
SK-V59* 2005-02-22 V QR-0054744
SK-V59* 2004-10-08 V 84-0054295
SK-V590000 2010-01-01 V U7-0055405
SK-V590000 2010-01-01 V V9-0055408
SK-V590000 2008-06-30 V YK-0051945
SK-V590000 2008-06-30 V YL-0052148
SK-V590000 2008-06-25 V YK-0051946
Habe folgende Lösung dafür:
with A AS (
select dense_rank() over (
partition by Produkt
order by Produkt, LiefTerm desc)
as RankNo,
Produkt, LiefTerm, A, Auftrag
from VO3M1),
B as (
select row_number() over (
partition by Produkt, RankNo
order by Produkt, RankNo) as LinNo,
RankNo, Produkt, LiefTerm, A, Auftrag
from A)
select * from B
where RankNo = 2 and LinNo = 1
Direkt ausgeführt, funktioniert es. Aber eine VIEW lässt sich damit nicht erzeugen: SQL-Systemfehler
( Probleme mit "RankNo" in der zweiten CET siehe Joblog )
Ausschnitt aus Joblog:
1 Benutzer-Trace-Puffer gelöscht.
Sortierfeld RANKNO in Format SAVO3 nicht gefunden.
SQL-Systemfehler.
Datei QAP0ZDMP in Bibliothek QTEMP bereits vorhanden.
Gibt es eine Erklärung für dieses Problem oder vielleicht ein PTF?
Oder bleibt mir nichts anderes übrig als das SQL umzuschreiben?