Heim >Datenbank >MySQL-Tutorial >So drehen Sie eine Tabelle in MySQL: Zeilen in Spalten umwandeln?

So drehen Sie eine Tabelle in MySQL: Zeilen in Spalten umwandeln?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-25 11:26:10605Durchsuche

How to Pivot a Table in MySQL: Transforming Rows into Columns?

die Tabelle in die Konvertierzeile in Spalte

formen

<:> Frage:

eine Tabelle mit drei Spalten in eine Datenperspektivtabelle umwandeln, in der die Linie in Spalten umgewandelt wird.

Beispiel:

Eingangstabelle:

Die erforderliche Ausgabe (Datenperspektivtabelle):

hostid itemname itemvalue
1 A 10
1 B 3
2 A 9
2 C 40
Lösung:

Die Datenperspektivfunktion von
hostid A B C
1 10 3 0
2 9 0 40
Mysql beinhaltet einen dreistufigen Prozess:

Interessierte Spalten auswählen:

  1. grundlegende Tabellen mit zusätzlicher Spaltenausdehnung:
<code class="language-sql">SELECT hostid, itemname, itemvalue
FROM history;</code>
Fügen Sie eine Spalte hinzu, die jedem einzigartigen Elementnamen entspricht.
  1. Gruppierung und Aggregation der Expansionstabelle:

Gruppieren im HostID und der Summe des Wertes jeder Spalte.
<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>
  1. Optional: Verschönerung der Aggregatabelle (ersetzen Sie den Nullwert auf 0)

Hinweis und Einschränkungen:
<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>
  1. Diese Lösung geht davon aus, dass die Spalte Perspektive der Datenperspektive einen bestimmten Wert hat (hier ist itemalue).
  2. Es unterstützt mehrere Y -Werte, ist jedoch darauf beschränkt, dass Datenperspektivspalten manuell addiert werden.
<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>
Die Verwendung einer großen Anzahl von Daten zum Generieren von Daten sehen Tabellen kann eine Herausforderung sein.

Das obige ist der detaillierte Inhalt vonSo drehen Sie eine Tabelle in MySQL: Zeilen in Spalten umwandeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn