PDA

View Full Version : Queryabfrage nach höchster Wert



W.Wagner
12-01-09, 13:18
Hallo zusammen,

Gibt es mit QUERY eine Möglichkeit immer nur den Satz mit dem höchsten Wert in eine Ausgabedatei zustellen?
Beispiel: In meiner Artikelkalkulationsdatei habe ich je Artikel zahlreiche Kalkulationssätze mit unterschiedlichen Datums stehen. Ich will aber nur mit dem Satz, welcher das neueste Datum hat, weiterarbeiten.

B.Hauser
12-01-09, 14:14
Hallo,

im Query/400 geht das nur mit 2 Queries und Zwischendatei:
Im ersten Query selektierst Du jeweils die Artikel und das zugehörige höchste Datum und gibst das Ganze in eine Zwischen-Datei aus.

Im zweiten Query verknüpfst Du diese Zwischen-Datei über Artikel-Nr. und Datum mit der Original-Datei und machst Deine Auswertungen.

Wenn Du mit SQL arbeitest, kannst Du das Ganze in einem Schritt machen, da man anstatt Zwischen-Dateien im gleichen Statement Sub-Selects oder Common Table Expressions verwenden kann:


With x as (Select ArtikelNr, Max(Datum) MaxDatum
From KalkTable
Group By ArtikelNr)
Select a.*
from x join KalkTable a on x.ArtikelNr = a.ArtikelNr
and MaxDatum = a.Datum;

oder


Select a.*
from KalkTable join (Select ArtikelNr, Max(Datum) as MaxDatum
from KalkTable
Group By ArtikelNr) as x
on a.ArtikelNr = x.ArtikelNr
and MaxDatum = a.Datum)

Soll das Ganze doch mit Query/400 verarbeitet werden, kannst Du aus den obigen Select-Statements Views (Create View MyView as (Select ....)) generieren und diese dann wie physische Dateien in Query verwenden.

Birgitta

W.Wagner
12-01-09, 14:55
Danke für die schnelle Antwort.
Das mit der Zwischendatei hatte ich auch schon probiert. Ich möchte aber das Datum und den Betrag mit ausgegeben haben. Diese kommen aber bei Ausgabeform Summenübersicht nur, wenn ich sie als Gruppenwechselstufe definiere. Dies bewirkt dann aber wieder, das alle Zeilen kommen.

Mfg W. Wagner

B.Hauser
12-01-09, 15:09
Danke für die schnelle Antwort.
Das mit der Zwischendatei hatte ich auch schon probiert. Ich möchte aber das Datum und den Betrag mit ausgegeben haben. Diese kommen aber bei Ausgabeform Summenübersicht nur, wenn ich sie als Gruppenwechselstufe definiere. Dies bewirkt dann aber wieder, das alle Zeilen kommen.

Deshalb brauchst Du ja das 2. Query!
Im ersten Query werden nur die ArtikelNr und das höchste Datum ausgegeben als Summenübersicht ausgegeben.
Im zweiten Query wird diese Zwischen-Datei mit der Original-Datei über ArtikelNr und Datum (in Zwischen-Datei steht ja nur das höchste Datum) verknüpft. Damit hast Du den kompletten Datensatz zur Verfügung und kannst den Betrag und was Du sonst noch aus dem Satz brauchst auswählen.

Birgitta

B.Hauser
12-01-09, 15:11
Danke für die schnelle Antwort.
Das mit der Zwischendatei hatte ich auch schon probiert. Ich möchte aber das Datum und den Betrag mit ausgegeben haben. Diese kommen aber bei Ausgabeform Summenübersicht nur, wenn ich sie als Gruppenwechselstufe definiere. Dies bewirkt dann aber wieder, das alle Zeilen kommen.
Deshalb brauchst Du ja das 2. Query!
Im ersten Query werden nur die ArtikelNr und das höchste Datum ausgegeben als Summenübersicht ausgegeben.
Im zweiten Query wird diese Zwischen-Datei mit der Original-Datei über ArtikelNr und Datum (in Zwischen-Datei steht ja nur das höchste Datum) verknüpft. Damit hast Du den kompletten Datensatz zur Verfügung und kannst den Betrag und was Du sonst noch aus dem Satz brauchst auswählen.

Birgitta