Heim >Datenbank >MySQL-Tutorial >Wie erstelle ich eine dynamische Pivot-Tabelle in MySQL mit ganzzahligen Benutzer-IDs?
Dynamische Pivot-Tabelle in MySQL
Bei der Arbeit mit einer Datenbank ist es oft nützlich, Pivot-Tabellen zu erstellen, um Daten über mehrere Spalten hinweg zusammenzufassen. Wenn die Spaltennamen jedoch dynamisch sind, kann dies eine Herausforderung darstellen. In diesem Artikel wird erläutert, wie eine dynamische Pivot-Tabelle in MySQL erstellt wird, insbesondere wenn die Benutzer-IDs Ganzzahlen sind.
In dem vom Benutzer bereitgestellten Beispiel schlug die Abfrage fehl, wenn die Benutzer-ID eine Ganzzahl war, funktionierte jedoch einwandfrei es war eine Schnur. Das Problem entstand, weil die Werte direkt als Spaltennamen verwendet wurden. Um dieses Problem zu beheben, müssen die Werte in Backticks (`) eingeschlossen werden, um gültige Spaltennamen zu erstellen.
Zum Beispiel anstelle von:
max(case when user_id = 1 then score end) as 1
Die korrigierte Syntax wäre:
max(case when user_id = 1 then score end) as `1`
Zusätzlich müssen bei der dynamischen Auswahl der Spalten auch die Backticks berücksichtigt werden. Die korrigierte Abfrage würde wie folgt aussehen:
SET @sql = NULL; SELECT GROUP_CONCAT(DISTINCT CONCAT( 'max(case when user_id = ''', user_id, ''' then score end) AS `', user_id, '`' ) ) INTO @sql FROM measure2; SET @sql = CONCAT('SELECT inspection_date, ', @sql, ' FROM measure2 GROUP BY inspection_date'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
Durch diese Anpassungen kann die Pivot-Tabelle erfolgreich generiert werden, auch wenn die Benutzer-IDs ganze Zahlen sind.
Das obige ist der detaillierte Inhalt vonWie erstelle ich eine dynamische Pivot-Tabelle in MySQL mit ganzzahligen Benutzer-IDs?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!