Hallo Thomas, > > eine scheinbar einfache Aufgabe hat mich heute genervt. Aus folgender > kleinen Tabelle in Base: > > PLZ Region Filiale Kunden > 11111 R1 F1 5 > 22222 R1 F2 6 > 33333 R1 F1 7 > 44444 R1 F1 4 > 55555 R1 F2 8 > > war zu ermitteln, welche Filiale bei welcher PLZ die meisten Kunden hat
Das ist nur in 2 Schritten lösbar, da so etwas wie "Max" nur zusammen mit einer Gruppierung erreicht werden kann. Da es um die maximale Kundenzahl in Abhängigkeit von der Filiale geht gehört die Filiale gruppiert und die maximale Kundenzahl als Max(Kunden) dazu. Aus dieser Abfrage machst Du eine Ansicht. Darauf kannst Du dann wie auf eine neue Tabelle zugreifen. Jetzt wird die Ursprungstabelle und die neue Ansichtstabelle über die Filialen und die Max(Kunden) miteinander verknüpft und Du erhältst die Abfragemöglichkeit auf den Rest des Datensatzes. Also SELECT "Filiale", MAX( "Kunden" ) AS "maxKunden" FROM "Filiale" GROUP BY "Filiale" Daraus dann einen View machen und SELECT "Filiale"."PLZ", "Filiale"."Filiale", "Filiale"."Kunden" FROM "Filiale" , "Ansicht_MaxKunden" WHERE "Filiale"."Filiale" = "Ansicht_MaxKunden"."Filiale" AND "Filiale"."Kunden" = "Ansicht_MaxKunden"."maxKunden" > (Das eigentliche Problem ist wesentlich komplexer, mit ca. 90000 Kunden > und auch mehr Ebenen). Bei dem Beispiel sieht man sofort, F1 hat die > meisten Kunden (7) bei PLZ 33333 und F2 hat das Maximum mit 8 Kunden bei > PLZ 55555. Mit einfachen Abfragen (Gruppieren, Summieren, Max usw.) habe > ich es nicht geschafft. Irgendwie ging es dann doch, über sortierte > Zwischentabellen. So richtig elegant war die Lösung aber nicht. Also nichts mit zwischendurch sortieren usw. Gruß Robert --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
