Tabelle in Spaltenformat umformen
Herausforderung: Daten aus einer MySQL-Tabelle im Pivot-Tabellenformat abrufen und dabei Zeilen in Spalten konvertieren.
Frage:
Bei einer gegebenen Tabelle mit den Spalten „hostid“, „itemname“ und „itemvalue“ werden die Ergebnisse wie folgt angezeigt:
hostid | A | B | C |
---|---|---|---|
1 | 10 | 3 | 0 |
2 | 9 | 0 | 40 |
Lösung:
Schritt 1: Wählen Sie die gewünschten Spalten aus
Identifizieren Sie die Spalten, die den y-Wert (Host-ID) und den x-Wert (Elementname) bereitstellen.
Schritt 2: Basistisch ausziehen
Erstellen Sie zusätzliche Spalten für jeden eindeutigen x-Wert.
<code class="language-sql">CREATE VIEW history_extended AS SELECT history.*, CASE WHEN itemname = "A" THEN itemvalue END AS A, CASE WHEN itemname = "B" THEN itemvalue END AS B, CASE WHEN itemname = "C" THEN itemvalue END AS C FROM history;</code>
Schritt 3: Gruppierung und Aggregation
Erweiterte Tabelle nach Y-Wert (Host-ID) gruppieren und aggregieren.
<code class="language-sql">CREATE VIEW history_itemvalue_pivot AS SELECT hostid, SUM(A) AS A, SUM(B) AS B, SUM(C) AS C FROM history_extended GROUP BY hostid;</code>
Schritt 4: Verschönern (optional)
Ersetzen Sie NULL-Werte durch Nullen, um ein klareres Erscheinungsbild zu erzielen.
<code class="language-sql">CREATE VIEW history_itemvalue_pivot_pretty AS SELECT hostid, COALESCE(A, 0) AS A, COALESCE(B, 0) AS B, COALESCE(C, 0) AS C FROM history_itemvalue_pivot;</code>
Hinweise und Einschränkungen:
Das obige ist der detaillierte Inhalt vonSo drehen Sie eine MySQL-Tabelle: Zeilen in Spalten umwandeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!