Mahlzeit zusammen.
Ich stehe vor dem Problem, eine Preistabelle mit Mengenstaffeln nach dem x-ten Wert auslesen zu müssen.
d.h. ich habe einen Tabelle mit folgenden Feldern:
- Preislisten-Index (3 unterschiedliche)
- TeileNr
- Menge
- Preis für Menge
d.h. in Summe gibt es für 1 Produktprogramm 3 Preislisten (ABC-Kunden) mit entspr. Mengenstaffel (>50.000 Datensätze)
die Mengenstaffel ist nur für eine Teilmenge darin und kann 2,3,4 stufig sein.
Menge 1 gibt es immer; die Staffel dahinter ist inkonsistent; kann also z.B.:
- 1/5/10 Stk.
- 1/2/12/25 Stk. sein
Das ist rein produktabhängig
ich muss nun herausfinden, welcher Preis hinter z.B. der 2-ten Staffelmenge auf Teileebene in Preisliste "A" hinterlegt ist. wenn es keine Staffel gibt, dann den Basispreis (Menge =1)
Hat dafür jemand eine Access-Lösung?
herzlichen Dank für Eure Hilfe
lg
Michael
Hallo,
was ist denn aus Deinem anderen Thema (ca. 1 Jahr alt) geworden ?
Das scheint ja ähnlich zu sein.
Geantwortet hast Du dort jedenfalls nicht mehr.
https://www.access-o-mania.de/forum/index.php?topic=26788.msg160259
Zitat von: mstadler71 am Oktober 10, 2024, 11:54:42ich muss nun herausfinden, welcher Preis hinter z.B. der 2-ten Staffelmenge auf Teileebene in Preisliste "A" hinterlegt ist. wenn es keine Staffel gibt, dann den Basispreis (Menge =1)
Wenn ich dich richtig verstehe, dann stimmt diese Beschreibung im Detail so nicht.
Du willst nicht den x-ten Preis, sondern du willst den Preis, der zu der jeweiligen Menge passt.
Dann brauchst du eine Abfrage, die den Preis für die größte Menge, die die Bedingung Menge >= AktuelleMenge erfüllt, ermittelt.
Mal einfach hier runtergetippt könnte das so aussehen, wobei die $Irgendwas-Werte deine aktuelle Kriterien sind.
SELECT [Preis für Menge]
FROM deineTabelle dt1
WHERE [Preislisten-Index] = $AktuellerIndex
AND TeileNr = $AktuelleTeileNr
AND Menge >= $AktuelleMenge
AND NOT EXISTS (SELECT 'x' FROM deineTabelle dt2
WHERE dt2.[Preislisten-Index] = dt1.[Preislisten-Index]
AND dt2.TeileNr = dt1.TeileNr
AND dt2.Menge >= $AktuelleMenge
AND dt2.Menge < dt1.Menge)
Hallo Klaus. Danke für den Hinweis. Das Thema war anders gelagert; Da ging es um eine Stufenhierarchie wo Werte auf unterschiedlichen Ebenen hinterlegt sind. Das konnte ich lösen
Hallo PhilS; Danke, aber die Menge ist nicht relevant als Vorgabe. ich muss immer z.B. den Staffelpreis der zweitniedrigsten Menge ermitteln;
das ist ein strategischer Referenzwert für den Preisvergleich. "welche Kunden haben eine höheren/niedrigeren Preis auf Teileebene als den 2-ten Staffelpreis der ABC-Kundenliste"
also bildlich ausgedrückt:
-nach Preislistenindex/TeileNr/Staffelmenge/Preis gruppiert
-Menge aufsteigend sortiert
-Artikelpreis auslesen der zweitniedrigsten Menge/oder 1.Datensatz wenn es keine Staffel gibt
Hier geht es weiter:
https://it-forum.group/View.aspx?ziel=85731-finde_x-ten_Wert_in_einer_Tabelle (https://it-forum.group/View.aspx?ziel=85731-finde_x-ten_Wert_in_einer_Tabelle)
Zitat von: mstadler71 am Oktober 10, 2024, 13:50:27ich muss immer z.B. den Staffelpreis der zweitniedrigsten Menge ermitteln;
Ok, dann folgender Lösungsansatz in Prosa:
1.) Erstelle eine Abfrage, die die Preistabelle pro Preisliste und Teilenummer anhand der Menge durchnummeriert. Siehe: FAQ 3.11 Laufende Nummer/Summe in Abfragen (https://www.donkarl.com/?FAQ3.11)
2.) Erstelle eine zweite Abfrage die die Datensätze in der Preistabelle pro Preisliste und Teilenummer zählt und entweder 1 oder 2 ausgibt, je nachdem ob es ein oder mehr Datensätze sind.
3.) Erstelle eine dritte Abfrage in der du die beiden Abfragen über einen Join auf Preisliste und Teilenummer und den 1-oder-2-Wert verknüpfst.
Danke PhilS!
ich habe es mittlerweile genau so gelöst; hatte gehofft es geht "eleganter" ;-)
lg
Michael