Suche…


Bemerkungen

Die Erstellung von Pivot-Abfragen in MySQL GROUP_CONCAT() auf der GROUP_CONCAT() Funktion. Wenn das Ergebnis des Ausdrucks, der die Spalten der Pivot-Abfrage erstellt, voraussichtlich groß ist, muss der Wert der Variablen group_concat_max_len erhöht werden:

set session group_concat_max_len = 1024 * 1024; -- This should be enough for most cases

Erstellen einer Pivot-Abfrage

MySQL bietet keine integrierte Möglichkeit zum Erstellen von Pivot-Abfragen. Diese können jedoch mit vorbereiteten Anweisungen erstellt werden.

Angenommen, die Tabelle tbl_values :

Ich würde Name Gruppe Wert
1 Pete EIN 10
2 Pete B 20
3 John EIN 10

Anfrage: Erstellen Sie eine Abfrage, die die Summe des Value für jeden Name anzeigt. Die Group muss eine Spaltenüberschrift sein und Name muss die Zeilenüberschrift sein.

-- 1. Create an expression that builds the columns
set @sql = (
    select group_concat(distinct 
        concat(
            "sum(case when `Group`='", Group, "' then `Value` end) as `", `Group`, "`"
        )
    ) 
    from tbl_values
);

-- 2. Complete the SQL instruction
set @sql = concat("select Name, ", @sql, " from tbl_values group by `Name`");

-- 3. Create a prepared statement
prepare stmt from @sql;

-- 4. Execute the prepared statement
execute stmt;

Ergebnis:

Name EIN B
John 10 NULL
Pete 10 20

Wichtig: Deaktivieren Sie die vorbereitete Anweisung, sobald sie nicht mehr benötigt wird:

deallocate prepare stmt;

Beispiel zur SQL-Geige



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow