Tag,
die kurze oder die lange Version?
Die Kurze:
Nun ja, bei der Datenstruktur, über einen Trick. Frag die Daten sortiert nach firma, abteilung, zweigstelle ab und halte die halt zwei Vergleichsvariablen. Dort rein speicherst du dir beim Durchgehen der Datensätze die aktuelle Firma und weißt, so lange wie diese bleibt bist du nur im Bereich von Abteilungen. Das selbe dann auch für die Zweigstellen.
Die Lange - und eigentlich wünschenswerte:
Du machst ein Redesign deiner Datenbank, in Richtung von
1. Firmen
2. Abteilungen
3. Zweigstellen
(also 3 Tabellen, dann speicherst du auch bei einer Abteilung nicht 100x den Namen, nur weil es 100 Zweigstellen gibt...)
und verküpfst dann entsprechend die Einträge.