Pivot-Tabellenausgabe in MySQL zurückgeben
Angenommen, Sie haben eine MySQL-Tabelle, die wie folgt organisiert ist:
公司名称 | 操作 | 页数 |
---|---|---|
公司A | 打印 | 3 |
公司A | 打印 | 2 |
公司A | 打印 | 3 |
公司B | 邮件 | NULL |
公司B | 打印 | 2 |
公司B | 打印 | 2 |
公司B | 打印 | 1 |
公司A | 打印 | 3 |
Das Ziel besteht nun darin, eine MySQL-Abfrage auszuführen, um eine Ausgabe ähnlich dieser zu erzeugen:
公司名称 | 邮件 | 打印1页 | 打印2页 | 打印3页 |
---|---|---|---|---|
公司A | 0 | 0 | 1 | 3 |
公司B | 1 | 1 | 2 | 0 |
Im Wesentlichen stellt diese Ausgabe eine Pivot-Tabelle dar, die die Daten basierend auf der Kombination aus Aktion und Seitenanzahl für jeden Firmennamen sortiert.
Lösung
Um die Pivot-Tabellenausgabe in MySQL zurückzugeben, können Sie die Anweisung CASE verwenden, um Bedingungen für jede Zelle zu definieren und GROUP BY verwenden, um die Daten nach Firmennamen zu sortieren.
Das Folgende ist die SQL-Anweisung für das bereitgestellte Beispiel:
<code class="language-sql">SELECT P.`company_name`, COUNT( CASE WHEN P.`action`='EMAIL' THEN 1 ELSE NULL END ) AS 'EMAIL', COUNT( CASE WHEN P.`action`='PRINT' AND P.`pagecount` = '1' THEN P.`pagecount` ELSE NULL END ) AS 'PRINT 1 pages', COUNT( CASE WHEN P.`action`='PRINT' AND P.`pagecount` = '2' THEN P.`pagecount` ELSE NULL END ) AS 'PRINT 2 pages', COUNT( CASE WHEN P.`action`='PRINT' AND P.`pagecount` = '3' THEN P.`pagecount` ELSE NULL END ) AS 'PRINT 3 pages' FROM test_pivot P GROUP BY P.`company_name`;</code>
Diese Abfrage gibt das gewünschte Pivot-Tabellenformat aus.
Wichtiger Hinweis
Das obige ist der detaillierte Inhalt vonWie erstelle ich eine Pivot-Tabellenausgabe mithilfe von MySQL-Abfragen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!