Abfrage: Feldwert aufgesplittet in mehrere Spalten

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

RobertG
********
Beiträge: 2067
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Abfrage: Feldwert aufgesplittet in mehrere Spalten

Beitrag von RobertG »

Hallo Tom,

so etwas geht mit korrelierenden Unterabfragen.

Code: Alles auswählen

SELECT "a"."Kunde", (SELECT SUM("Kunde") FROM "Tabelle" WHERE "Auftragsstatus" = 'a' AND "Kunde" = "a"."Kunde") AS "Wert_a" FROM "Tabelle" AS "a"
Das geht mit den anderen Feldern genauso wie eben mit [Auftragsstatus = a].

Gruß

Robert
RobertG
********
Beiträge: 2067
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Abfrage: Feldwert aufgesplittet in mehrere Spalten

Beitrag von RobertG »

Hallo Thomas,

der Code von mir war falsch - eben schnell hingeschrieben.

Code: Alles auswählen

SELECT "a"."Kunde", (SELECT COUNT("Kunde") FROM "Tabelle" WHERE "Auftragsstatus" = 'a' AND "Kunde" = "a"."Kunde") AS "Wert_a", (SELECT COUNT("Kunde") FROM "Tabelle" WHERE "Auftragsstatus" = 'b' AND "Kunde" = "a"."Kunde") AS "Wert_b", (SELECT COUNT("Kunde") FROM "Tabelle" WHERE "Auftragsstatus" = 'c' AND "Kunde" = "a"."Kunde") AS "Wert_c" FROM "Tabelle" AS "a"
Muss natürlich COUNT heißen. Summen aus der Addition von Texten zu ziehen kann ja gar nicht gehen. Aber Einträge zusammenzählen kann schon funktionieren. Ob Du nun das Feld "Kunde" zählst oder das Feld "Auftragstatus" oder den Primärschlüssel ist eigentlich egal, da durch die Abfrage ja nur Datensätze ausgegeben werden, bei denen alle diese Felder auch vorhanden und nicht leer (NULL) sind.

Gruß

Robert
RobertG
********
Beiträge: 2067
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Abfrage: Feldwert aufgesplittet in mehrere Spalten

Beitrag von RobertG »

Hallo Thomas,

Code: Alles auswählen

SELECT "a"."Kunde" FROM "Tabelle" AS "a"
Dies sagt nur aus, dass der Tabelle "Tabelle" ein Alias "a" zugewiesen wird. Das wird für die Unterabfragen benötigt, die alle auf den Inhalt des aktuellen Datensatzes der Tabelle zugreifen.

Code: Alles auswählen

SELECT "a"."Kunde", (SELECT COUNT("Kunde") FROM "Tabelle" WHERE "Auftragsstatus" = 'a' AND "Kunde" = "a"."Kunde") AS "Wert_a" FROM "Tabelle" AS "a"
Die Unterabfrage berechnet zu dem Kunden des aktuellen Datensatzes ("a"."Kunde") die Anzahl der Felder, bei denen im "Auftragsstatus 'a' vermerkt ist.

Wenn Du klarer sagst, was in den Tabellen drin steht, dann bekommen wir sicher aus den Hänger noch raus. Was klappt denn nicht ganz? Kommet eine Fehlermeldung oder werden zu viele Datensätze angezeigt. Brauchst Du vielleicht

Code: Alles auswählen

SELECT DISTINCT "a"."Kunde" FROM "Tabelle" AS "a"
damit pro Kunde nur eine einzige Anzeige erfolgt?

Gruß

Robert
Antworten