Anmelden

View Full Version : ET-NUMMER, LETZES BESTELLDATUM



Seiten : [1] 2 3

Eric
18-05-11, 17:57
Hallo,

ich habe folgendes Problem, aus einer Tabelle der AS400 mit folgendem Inhalt (verkürzt) :

ET-NUMMER LETZES BESTELLDATUM

100 01.01.2011
100 03.02.2011
100 04.04.2011
101 03.12.2009
102 04.05.2008
102 01.05.2011 usw.

soll jeweils zur Artikelnummer die letzte Bestellung ausgegeben werden, mit Query hab ich da sicher keine Möglichkeit, wie mit SQL ?
Danke im Voraus für die Hilfe
eric

Fuerchau
18-05-11, 18:21
select ETNummer max(Bestelldatum)
from MyFile
group by ETNummer

Voraussetzung ist natürloch, dass das Datum sortierfähig ist.
Ansonsten muss man es sortierfähig umdrehen, was auch mit SQL geht.

Du kannst dir darüber dann auch eine View erstellen
CREATE VIEW MYVIEW AS
SELECT ...
die du dann im Query verwenden kannst.

Eric
18-05-11, 18:41
Hallo, vielen Dank, also müsste das so aussehen :

select ETNummer max(Bestelldatum)
from MyFile
order by Bestelldatum asc
group by ETNummer

oder ? Danke nochmals eric

B.Hauser
19-05-11, 05:25
Hallo, vielen Dank, also müsste das so aussehen :

select ETNummer max(Bestelldatum)
from MyFile
order by Bestelldatum asc
group by ETNummer

oder ? Danke nochmals eric

Group By und Order By sind in der falschen Reihenfolge.
Da Max(Bestelldatum) verwendet wird macht eine Sortierung nach Bestelldatum keinen Sinn und ist sowieso nicht zulässig.
Wenn das Ergebnis nach dem maximalen Bestell-Datum absteigend sortiert werden soll, muss im Order By Max(Bestelldatum) angegeben werden.

Was Baldur mit sortierbar meinte war, wenn das Datum z.B. im Format TagMonatJahr gespeichert, muss es zunächst aufgedröselt und wieder neu zusammengesetzt werden (JahrMonatTag), damit der Maximal-Wert richtig ermittelt werden kann.

Birgitta

Pikachu
19-05-11, 08:18
... soll jeweils zur Artikelnummer die letzte Bestellung ausgegeben werden, mit Query hab ich da sicher keine Möglichkeit, wie mit SQL ?
Im Query/400 gibt's unter "Summenfunktionen für Bericht auswählen" die Auswahl "4=Größter Wert".

Fuerchau
19-05-11, 08:19
Eine Sortierung ist tatsächlich nicht erforderlich, da ja das MAX ermittelt wird:

select ETNummer, max(Bestelldatum) as Bestelldatum
from MyFile
group by ETNummer
[order by Bestelldatum asc]

Das order by sortiert das Ergebnis!
In einer View ist order by unzulässig.

Eric
19-05-11, 16:59
Hallo, vielen Dank für die Hilfe, der SQL von B. Fuerchau bringt das Ergebniss was ich möchte !

Weil es angesprochen wurde, das Datum aufdrösseln geht bitte wie ?

DANKE IM VORAUS ERIC

Fuerchau
19-05-11, 17:21
Das hängt von der Speicherform ab.
Beispiel TTMMJJJJ

substr(digits(MyDate), 5, 4) concat substr(digits(MyDate), 3, 1) concat substr(digits(MyDate), 1, 2)

Je nach dem, was man machen will sähe dein Max(Bestelldatum) dann so aus:

max(
substr(digits(Bestelldatum), 5, 4) concat substr(digits(Bestelldatum), 3, 1) concat substr(digits(Bestelldatum), 1, 2)
) as Bestelldatum

So kann man fast alles verwursten.

B.Hauser
19-05-11, 17:24
Ich würde allerdings den Monat 2stellig definieren!

max(
substr(digits(Bestelldatum), 5, 4) concat substr(digits(Bestelldatum), 3, 2) concat substr(digits(Bestelldatum), 1, 2)
) as Bestelldatum

Birgitta

Eric
19-05-11, 17:30
:)
HALLO,

vielen Dank, werd das so mal machen und mich melden !

DANKE ERIC