PDA

View Full Version : Hilfe bei Select Statement



ath
30-04-09, 05:20
Hallo Experten,

Ich habe hier eine DB2-Tabelle, die u.a. folgende Felder enthält:

Artikelnummer, Buchungsdatum, Uhrzeit, Bestand

wobei ein Datum im Format jjjjmmtt und die Uhrzeit als Sekunden seit Mitternacht gespeichert sind. Zu jedem Datum gibt es mehrere gleiche Artikelnummern.

Ich suche nun eine SQL-Anweisung, die mir zu jedem Artikel genau den Satz ausgibt, dessen Datum und Uhrzeit am größten ist (also den aktuellsten Satz). Eine weitere Bedingung ist, daß das Buchungsdatum vor einem einzugebenden Datum liegen muß.

Beispiel:
Artikelnummer Buchungsdatum Uhrzeit Bestand
4711 20090205 5480 1000
4711 20090310 3850 2000
4712 20090305 4000 3000
4711 20090201 1500 4000
4713 20090110 8000 1500
4711 20090205 5481 1200

Bedinung: Berücksichtige nur solche Sätze, die vor dem 01.03.2009 gebucht wurden

Das Statement soll also folgende Sätze selektieren:

Artikelnummer Buchungsdatum Uhrzeit Bestand
4713 20090110 8000 1500
4711 20090205 5481 1200

Ich hoffe, Ihr könnt mir weiterhelfen und ich brauche keine Zwischendatei.

Danke und Gruß
Andreas

Fuerchau
30-04-09, 08:00
Select ...
from file A
where digits(Datum) concat digits(Zeit) <= (select max(digits(Datum) concat digits(Zeit)) from file B where datum < 20090301 and A.Artikel = B.Artikel and ... )

Pikachu
30-04-09, 08:32
SELECT ARTIKEL, DATUM, ZEIT, SUM(BESTAND) FROM FILE
WHERE ARTIKEL CONCAT DATUM CONCAT ZEIT IN (
SELECT ARTIKEL CONCAT MAX(DATUM CONCAT ZEIT) FROM FILE
WHERE DATUM < '20090301' GROUP BY ARTIKEL)
GROUP BY ARTIKEL, DATUM, ZEIT

Fuerchau
30-04-09, 08:48
@Pikachu
Schneller ist es ohne Group by durch die Direktbeziehung.
Numerische Felder lassen sich nicht per concat verbinden, daher digits (char entfällt wegen Vornullenentfernung bei der Zeit).