Seite 1 von 1

Zusammenfassen von Datensätzen

Verfasst: Mo 6. Jan 2014, 14:51
von Eixen
Hallo liebe Base-Community,

ich hänge an einem Problem fest, welches vermutlich nicht so schwer zu lösen ist, aber das liegt wohl an einer Schranke vor dem Kopf.

Es geht um folgendes:
Es existiert eine Tabelle mit den Spalten wie folgt:

Kundennummer, StandortNr, StraßeNr, PLZ, Ort, Merkmal1, Merkmal2, Merkmal3, ...

Die Merkmale sind Boolsche Operatoren, also entweder TRUE oder FALSE.

Zu einem Kunden existieren mehrere Standorte. Jeder Standort hat seine eigenen Merkmale.

Nun möchte ich diese Merkmale in einer Abfrage zu einem Kunden zusammenfassen. Das Merkmal-Feld soll TRUE ergeben, sobald irgendein Standort dieses Merkmal hat.
Entsprechend: Wenn keiner der Standorte des Kunden ein Merkmal hat, soll FALSE zurückgegeben werden.

Dieses Problem ist wahrscheinlich relativ leicht lösbar, ich komme bloß nicht drauf. Vielen Dank für eure Unterstützung!

Beste Grüße,
Eixen

Re: Zusammenfassen von Datensätzen

Verfasst: Mo 6. Jan 2014, 16:22
von F3K Total
Hi,
vielleicht so:

Code: Alles auswählen

Select "Kundennummer", "StandortNr", "StraßeNr", "PLZ", "Ort",  CASEWHEN(("Merkmal1"=true) or ("Merkmal2" = true) or ("Merkmal3" = true), true, false) as "Merkmal" from "Tabelle1"
Gruß R

Re: Zusammenfassen von Datensätzen

Verfasst: Mo 6. Jan 2014, 16:53
von Eixen
Danke für deine Antwort!
Wenn ich es richtig verstehe, dann gibt in deinem Beispiel die Abfrage ein [X] aus, wenn nur eines der Merkmale pro Standort zutrifft.

Ich meinte es wahrscheinlich anders herum, siehe Screenshot:
Dort werden drei Standorte abgefragt.

Das Ergebnis soll ein Datensatz des Kunden sein, der alle Merkmale der Standorte beinhaltet, also eine Zusammenfassung der Standorte.

Also sollte das Ergebnis aus den Datensätzen folgendes sein:

9999 Testkunde, Haken bei M1, M3, M6 und M7, die anderen bleiben bei NULL.

Ich suche gerade die Lösung über eine Gruppierung, weiß jedoch nicht, wie ich das Problem löse.

Beste Grüße, Eixen

Re: Zusammenfassen von Datensätzen

Verfasst: Mo 6. Jan 2014, 17:21
von F3K Total
Hi,
so sollte es funktionieren:

Code: Alles auswählen

SELECT "KundenNr", "Name", MAX("M1"), MAX("M2"), MAX("M3"), MAX("M4"), MAX("M5"), MAX("M6"), MAX("M7") FROM "Tabelle1" group by "KundenNr", "Name"
Gruß R

Re: Zusammenfassen von Datensätzen

Verfasst: Mo 6. Jan 2014, 18:32
von Eixen
Ich habe das Problem nun über die SOME-Funktion gelöst, aber MAX funktioniert scheinbar exakt gleich.
Vielen Dank!

Allerdings bleibt noch eine Frage offen:
Ist es auch möglich, die Ortsnamen mehrerer Standorte in ein Feld schreiben zu lassen? Also eine Zusammenfassung der Text-Felder.

Beste Grüße,
Eixen

Re: Zusammenfassen von Datensätzen

Verfasst: Mo 6. Jan 2014, 19:40
von RobertG
Hallo Eixen,

Du hast die Ortsnamen im gleichen Feld, aber in unterschiedlichen Datensätzen?
Die Zusammenfassung in Base geht mit der eingebauten HSQLDB nur beschränkt. Wenn Du z.B. die MariaDB/MySQL verwendest, dann heißt die Funktion dafür Group_CONCAT(). In der zukünftigen internen Firebird-Datenbank erreichst Du das mit der Funktion LIST(). Für die HSQLDB kannst Du nur eine Krücke bauen. Seht im Handbuch im Kapitel "Datenbankaufgaben → Gruppieren und Zusammenfassen" am Beispiel von Adressen, wo die Vornamen von Personen mit gleichem Nachnamen zusammengefasst in einem Feld ausgegeben werden.

Gruß

Robert

Re: Zusammenfassen von Datensätzen

Verfasst: Do 9. Jan 2014, 12:57
von Eixen
Moin Robert und Rik,

vielen Dank für eure Unterstützung!