Bedingtes GROUP BY, Nur bei einem bestimmten Wert gruppieren

Gray

Erfahrenes Mitglied
Hi,

ich habe folgendes Problem.

In einer Tabelle gibt es eine Spalte "typ", nach dieser Spalte soll Gruppiert werden, allerdings nur ein bestimmter Wert.

Code:
ID | TYP
----------
1  | pauschale
1  | pauschale
3  | pauschale
3  | pauschale
5  | was anderes
5  | was anderes
7  | noch was
8  | egal was

Nun möchte ich diese Tabelle gerne gruppiert haben, allerdings NUR wenn der Wert der Spalte "TYP" gleich "pauschale" ist und die ID Identisch ist.

Ich hätte also gerne dieses Ergebnis:

Code:
ID | TYP
----------
1  | pauschale
3  | pauschale
5  | was anderes
5  | was anderes
7  | noch was
8  | egal was

Allerdings habe ich keine Idee wie ich dies umsetzen kann.
 
Mit einem UNION.
Zudem kannst du für das Resultat auch auf DISTINCT zurückgreiffen da du ja keine Gruppierungsfunktionen (SUM() COUNT() etc) verwendest
SQL:
SELECT DISTINCT
    id,
    typ
FROM
    my_table
WHERE
    typ = 'pauschale'
UNION ALL
SELECT
    id,
    typ
FROM
    my_table
WHERE
    typ != 'pauschale'
 
Zuletzt bearbeitet von einem Moderator:
Das hat geholfen, Vielen Dank.
Ich dachte allerdings das es ggf. in einer einzigen Abfrage möglich sei. ;)
 
Wenn du eine eindeutige id hättest. In meinem Beispiel unique_id.
SQL:
SELECT
    id,
    typ
FROM
    my_table
GROUP BY
    id,
    typ,    
    CASE 
        WHEN typ = 'pauschale'
        THEN -1
        ELSE unique_id
    END
 
Zuletzt bearbeitet von einem Moderator:
Zurück