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]

Antwort per Email an