MySQL
Pivot-Abfragen
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;
Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow