Vinzenz Mai: Mehrere Counts auf eine Tabelle inkl Gruppierung

Beitrag lesen

Hallo Benjamin,

ID  | Name     | Schalter
1   |   A      |     j
2   |   B      |     j
3   |   C      |     n
4   |   B      |     j
5   |   A      |     n

Herauskommen soll dann :

Anzahl| Name | j | n
2     |   B  | 2 | 0
2     |   A  | 1 | 1
1     |   C  | 0 | 1

Du suchst eine Kreuztabelle. Schließlich werden aus den unterschiedlichen Werten in der Spalte Schalter Spaltenüberschriften.

MySQL enthält keine eingebaute Unterstützung für Kreuztabellen, aber Dein Statement läßt sich analog zu meinen Beispielen in einem Archivbeitrag zusammensetzen:

SELECT                     -- Gib mir  
    COUNT(Name) Anzahl,    -- die Anzahl des Auftretens des Namens  
    Name,                  -- sowie den Namen selbst  
    -- berücksichtige nur Zeilen mit dem Wert j in Schalter  
    -- und diese Zeilen möchtest Du zählen  
    -- und benenne diese Reihe j  
    COUNT(CASE WHEN Schalter = 'j' THEN Schalter ELSE NULL END) j,  
    -- analog für n  
    -- berücksichtige nur Zeilen mit dem Wert n in Schalter  
    -- und diese Zeilen möchtest Du ebenfalls zählen  
    -- und benenne diese Reihe n  
    COUNT(CASE WHEN Schalter = 'n' THEN Schalter ELSE NULL END) n  
FROM  
    Tabelle  
GROUP BY Name

Freundliche Grüße

Vinzenz