PDA

View Full Version : MAX in SQL mit Datum Zeit und Suffix



Seiten : [1] 2

mikka_71
02-10-08, 13:08
Guten Tag zusammen

ich stecke wieder einmal fest und brauche Hilfe. Ich muss eine Datei erstellen mit dem letzten Eintrag aus den Artikeltransaktionen.

Lagerort Artikel Datum Zeit Suffix
LO ARTIKEL_1 20080929 112614 1 ffice:office" /><O:p></O:p>
LO ARTIKEL_1 20080929 112655 1 <O:p></O:p>
LO ARTIKEL_1 20080930 62455 1 <O:p></O:p>
LO ARTIKEL_1 20080930 62516 1 <O:p></O:p>
LO ARTIKEL_1 20080930 82339 1 <O:p></O:p>
LO ARTIKEL_1 20080930 82351 1 <O:p></O:p>
LO ARTIKEL_1 20080930 133526 1 <O:p></O:p>
LO ARTIKEL_1 20080930 133529 1 <O:p></O:p>
LO ARTIKEL_1 20081001 90817 1 <O:p></O:p>
LO ARTIKEL_1 20081001 90834 1

Mein SQL Statement sollte den fett markierten Satz zurückgeben. Zusätzliches Problem ist, dass bei der Zeit ohne führende Nullen abgespeichert wird.

momentan versuch ichs wie folgt:

select Lagerort, Artikel, max(trim(char(Datum)) || trim(char(Zeit)) || trim(char(Suffix)))
where Lagerort = 'LO' and Datum between 20080901 and 20080930
Group by Lagerort, Artikel

Leider bekomm ich aber nicht den gewünschten Satz zurück.

Besten Dank für eure kompetente Hilfe
Grüss
mikka_71

Fuerchau
02-10-08, 13:12
Wenn dein Datum- und Zeitfeld numerisch ist, verwende DIGITS(Feld) statt char(Feld) und lass das TRIM weg.

mikka_71
02-10-08, 13:36
Besten Dank. Da komme ich doch schon etwas weiter.

Grüsse
mikka_71

mikka_71
06-10-08, 07:14
Hallo zusammen...

immer noch das gleiche Problem. Ich muss nun schrittweise vorgehen und schaffe es wirklich nicht.

Meine Datei ist immer noch gleich. Mit meinem ersten Statement hole ich das höchste Datum:

INSERT INTO INV_HELP <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p>
SELECT <o:p></o:p>
Lagerort,
Artikel,
max(Datum) ,
0,
0
FROM <o:p></o:p>
mittra <o:p></o:p>
WHERE <o:p></o:p>
Lagerort = 'LO' and Datum between FromDate (yyyymmdd) and ToDate (yyyymmdd) <o:p></o:p>
GROUP BY
Lagerort, Artikel

Die Daten welche geliefert werden sehen so aus:


<TABLE class=MsoTableGrid style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-border-alt: solid windowtext .5pt; mso-yfti-tbllook: 480; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-border-insideh: .5pt solid windowtext; mso-border-insidev: .5pt solid windowtext" cellSpacing=0 cellPadding=0 border=1><TBODY><TR style="mso-yfti-irow: 0; mso-yfti-firstrow: yes"><TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 52.15pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt" vAlign=top width=70>Lagerort<o:p></o:p>
</TD><TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 61.25pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt" vAlign=top width=82>Artikel<o:p></o:p>
</TD><TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 63pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt" vAlign=top width=84>Datum<o:p></o:p>
</TD><TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 45pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt" vAlign=top width=60>Zeit<o:p></o:p>
</TD><TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 45pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt" vAlign=top width=60>Suffix<o:p></o:p>
</TD></TR><TR style="mso-yfti-irow: 1"><TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 52.15pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=70>LO<o:p></o:p>
</TD><TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 61.25pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=82>Artikel_1<o:p></o:p>
</TD><TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 63pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=84>20080930. <o:p></o:p>
</TD><TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 45pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=60>0<o:p></o:p>
</TD><TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 45pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=60>0<o:p></o:p>
</TD></TR><TR style="mso-yfti-irow: 2"><TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 52.15pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=70>LO<o:p></o:p>
</TD><TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 61.25pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=82>Artikel_2 <o:p></o:p>
</TD><TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 63pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=84>20080918. <o:p></o:p>
</TD><TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 45pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=60>0<o:p></o:p>
</TD><TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 45pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=60>0<o:p></o:p>
</TD></TR><TR style="mso-yfti-irow: 3"><TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 52.15pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=70>LO<o:p></o:p>
</TD><TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 61.25pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=82>Artikel_3 <o:p></o:p>
</TD><TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 63pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=84>20080926. <o:p></o:p>
</TD><TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 45pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=60>0<o:p></o:p>
</TD><TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 45pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=60>0<o:p></o:p>
</TD></TR><TR style="mso-yfti-irow: 4; mso-yfti-lastrow: yes"><TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 52.15pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=70>LO<o:p></o:p>
</TD><TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 61.25pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=82>Artikel_4 <o:p></o:p>
</TD><TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 63pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=84>20080926.<o:p></o:p>
</TD><TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 45pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=60>0<o:p></o:p>
</TD><TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 45pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=60>0<o:p></o:p>
</TD></TR></TBODY></TABLE>

Das nächste Statement soll mir nun die höchste Zeit des Artikels an den Datum holen. Doch entweder bekomm ich nur das höchste Datum für alle Artikel zurück:

update inv_help as T1 set T1.Zeit<o:p></o:p>
select max(digits(T2.zeit) from T1 inner join Transaktionen as T2 on T1.Lagerort = and itno T2. Lagerort and T1.Artikel = T2.Artikel and T1.Datum = T2.Datum)

oder mit EXISTS die Meldung SQL0811 Fehler 2.

update inv_help as T1 set T1.Zeit<o:p></o:p>
(select max(digits(T2.zeit) from T1 inner join Transaktionen as T2 on T1.Lagerort = and itno T2. Lagerort and T1.Artikel = T2.Artikel and T1.Datum = T2.Datum group by T1.Lagerort, T1.Artikel,T1.Datum) <o:p></o:p>
where exists<o:p></o:p>
(select max(digits(T2.zeit) from T1 inner join Transaktionen as T2 on T1.Lagerort = and itno T2. Lagerort and T1.Artikel = T2.Artikel and T1.Datum = T2.Datum group by T1.Lagerort, T1.Artikel,T1.Datum) <o:p></o:p>

Das gleiche erwartet mich noch um den höcsten Zeittsuffix zu holen. Weiss eventuell jemand einen bessern, sprich schnelleren Weg? Ich habe 28Millionen Artikeltransaktionen in der Basisdatei!!

Liebe Grüsse
mikka_71

B.Hauser
06-10-08, 08:53
Hallo,

wenn ich die Aufgabenstellung richtig verstehe, versuchst Du pro Lager und Artikel den letzten Satz (höchstes Datum mit der höchsten Zeit) zu ermitteln und in die zweite Datei zu übertragen.

Wie Du bereits festgestellt hast, brauchst dazu mehrere Schritte.
1. Der Satz mit dem höchsten Datum muss ermittelt werden
2. Die höchste Urzeit des ausgewählten Datums muss ermittelt werden.
3. Mit diesen Informationen muss der entsprechende Satz ermittelt werden und in die zweite Datei eingefügt werden.

Versuch's mal mit folgendem Statement:


Insert into mytable2
Select c.*
from (select Lager aLager, Artikel aArtikel, Max(Datum) aDatum
from MyTable
where Lager = 'LO' and Datum between 20080901 and 20080930
Group by Lager, Artikel) a
join (Select Lager bLager, Artikel bArtikel, Datum bDatum, Max(Zeit) bZeit
from MyTable
group by Lager, Artikel, Datum) b
On aLager = Blager and aArtikel = bArtikel and aDatum = bDatum
Join MyTable c
on Lager = aLager and Artikel = bArtikel and Datum = aDatum and Zeit = bZeit


Anstatt Sub-Selects in der From-Anweisung könnten auch Common Table Expressions verwendet werden.
Auf alle Fälle sollten Zugriffswege (DDS beschriebene logische Dateien oder SQL Indices) über Lager/Datum und Lager/Artikel/Datum/Zeit vorhanden sein.

Bei der obigen Lösung können Zugriffswege verwendet werden. Bei einer Lösung, bei der eine oder mehrere Spalten konvertiert und verknüpft werden, nimmt man dem Optimizer jede Möglichkeit (zumindest vor Release 6.1) Zugriffswege für diese Spalten zu verwenden. Die Folge ist u.U. ein Table Scan, d.h. jeder Satz in der Datei wird gelesen.

Birgitta

mikka_71
07-10-08, 06:16
Besten Dank Brigitta

Ich benutze natürlich logische Dateien. Aber ich schaff esw nicht, deinLeider schaff ich es mit deinem Statement nicht. Ich bin nicht so versiert, dies umzusetzen oder meine schwarzgrüne Oberfläche will mir nicht helfen.

Ich habe nur zwei Tabellen.

Tabelle 1 ist die zu befüllende mit Lagert/Artikel/Datum/Zeit/Suffix und Tabelle 2 sind die Artikeltransaktionen.

Ich bin etwas ratlos.

mikka_71

B.Hauser
07-10-08, 09:06
Ich benutze natürlich logische Dateien. Aber ich schaff esw nicht, deinLeider schaff ich es mit deinem Statement nicht. Ich bin nicht so versiert, dies umzusetzen oder meine schwarzgrüne Oberfläche will mir nicht helfen.

Ich habe nur zwei Tabellen.

Tabelle 1 ist die zu befüllende mit Lagert/Artikel/Datum/Zeit/Suffix und Tabelle 2 sind die Artikeltransaktionen.

Ich bin etwas ratlos.

1. Die Verwendung von DDS beschriebenen logischen Dateien in SQL ist so ziemlich das ungeschickteste, was man machen kann. In SQL Statements sollten immer die physischen Dateien oder SQL Views verwendet werden. Bei der Verwendung von logischen Dateien muss das SQL-Statement zunächst vom Optimizer so umgeschrieben werden, dass direkt die physischen Dateien angesprochen werden.

2. Bunte Oberflächen helfen Dir auch nicht weiter.

3. Versuche zunächst das SELECT-Statement ohne Insert auszuführen. (Den Insert kann man als letztes drum rum bauen).

4. In dem SQL-Select-Statement werden quasi 3 "Dateien" erstellt miteinander verknüpft. Dabei wird immer Bezug auf die gleiche Datei genommen.
In der 1. Datei, die über einen Sub-Select temporär generiert wird, wird das höchste Datum für den angegebenen Lagerort im angegebenen Zeitraum ermittelt.
Das Ergebnis dieser Abfrage wird über Lager, Artikel und Datum wird wiederum mit der Original-Datei verknüpft, um die höchste Zeit für den in der 1. Abfrage ermittelten Lager, Artikel und Datum zu ermitteln. (2. Sub-Select)
Im 3. Schritt wird dann das Ergebnis aus der Verknüpfung der ersten beiden Abfragen mit der Original-Datei verknüpft um den kompletten Datensatz und nicht nur Teile davon zu selektieren.
Am einfachsten ist, wenn Du die einzelnen Sub-Selects nacheinander aufbaust und jeweils prüfst.

Birgitta

mikka_71
07-10-08, 09:38
Zu Punkt 1. Danke. Habe ich nicht gewusst.

Zu Punkt 2. Meinte damit eine etwas bedienerfreundlichere Umgebung.

Zu Punkt 3. Bin ich dran. Muss ja noch versuchen den Suffix irgendwie da ranzujoinen. Es ist möglich dass mehrere Transaktionen zur gleichen Zeit geschrieben werden, diese werden dan fortlaufend hochgezählt.

Ich versuchs mal und hoffe, dass ich es diese Mal schaffe.

Danke
mikka_71

kitvb1
09-10-08, 09:39
Sie können mal so versuchen:

select Lagerort, Artikel, trim(char(Datum)) || trim(char(Zeit)) || trim(char(Suffix))
where Lagerort = 'LO' and Datum between 20080901 and 20080930
order by Lagerort, Artikel desc
fetch first row only

Fuerchau
09-10-08, 11:41
@kitvb1
Tut mir Leid, aber das ist sowas von falsch:
Sortierung des Begriffes "trim(..." fehlt, da ja hier das letzte ermittelt werden soll und nicht der letzte Artikel.
Ausserdem werden durch char(Datum) und char(Zeit) Vornullen entfernt (siehe auch oben), was zur falschen Sortierung führt.
Mein Vorschlag war ja DIGITS zu nehmen und TRIM zu entfernen:

select Lagerort, Artikel, max(digits(Datum) || digits(Zeit) || char(Suffix))
where Lagerort = 'LO' and Datum between 20080901 and 20080930
Group by Lagerort, Artikel