Heim > Datenbank > MySQL-Tutorial > Wie kann ich in MySQL Zeilen in dynamische Spalten umwandeln?

Wie kann ich in MySQL Zeilen in dynamische Spalten umwandeln?

Mary-Kate Olsen
Freigeben: 2025-01-25 13:07:08
Original
941 Leute haben es durchsucht

How to Pivot Rows into Dynamic Columns in MySQL?

MySQL: Konvertieren Sie die Zeilendaten in eine dynamische Spalte

Problembeschreibung

Angenommen, wir haben die folgenden drei MySQL -Tabellen:

    Produkttabelle (Produkte):
  • <code>  id | name
       1 | 产品A
       2 | 产品B</code>
    Nach dem Login kopieren
    Partner Tabelle (Partner):
  • Umsatz (Verkauf):
    <code>  id | name
       1 | 合作伙伴A
       2 | 合作伙伴B</code>
    Nach dem Login kopieren
  • Ziel ist es, die Liniendaten in der Verkaufstabelle in dynamische Spalten umzuwandeln, und der Name repräsentiert verschiedene Produkte. Die erwarteten Ausgangsergebnisse sind wie folgt:

    <code>  partners_id | products_id
                1             2
                2             5
                1             5
                1             3
                1             4
                1             5
                2             2
                2             4
                2             3
                1             1</code>
    Nach dem Login kopieren
  • Antwort
Leider fehlt MySQL eine spezielle Pivot -Funktion. Wir können jedoch die Aggregatfunktion und die Fallanweisung kombinieren, um ähnliche Ergebnisse zu erzielen:

<code>partner_name | 产品A | 产品B | 产品C | 产品D | 产品E
合作伙伴A              1           1           1           1           2
合作伙伴B              0           1           1           1           1</code>
Nach dem Login kopieren
Dynamische Spaltenkonvertierung

Um unbekannte Produkte zu verarbeiten, müssen wir dynamische Spalten zur Konvertierung verwenden. Dies muss die Informationen in der Produkttabelle verwenden, um die SQL -Anweisung vorzubereiten:

<code class="language-sql">SELECT pt.partner_name,
  COUNT(CASE WHEN pd.product_name = '产品A' THEN 1 END) AS 产品A,
  COUNT(CASE WHEN pd.product_name = '产品B' THEN 1 END) AS 产品B,
  COUNT(CASE WHEN pd.product_name = '产品C' THEN 1 END) AS 产品C,
  COUNT(CASE WHEN pd.product_name = '产品D' THEN 1 END) AS 产品D,
  COUNT(CASE WHEN pd.product_name = '产品E' THEN 1 END) AS 产品E
FROM partners pt
LEFT JOIN sales s
  ON pt.part_id = s.partner_id
LEFT JOIN products pd
  ON s.product_id = pd.prod_id
GROUP BY pt.partner_name</code>
Nach dem Login kopieren
Mit dieser Methode können Sie eine beliebige Anzahl von Produktspalten verarbeiten und sicherstellen, dass sich die Abfrage an Änderungen in der Produkttabelle anpassen kann, ohne die SQL -Anweisung selbst zu ändern.

Das obige ist der detaillierte Inhalt vonWie kann ich in MySQL Zeilen in dynamische Spalten umwandeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage