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?