Pivot-Tabellen in MySQL mit dynamischen Spalten
Diese Frage befasst sich mit der Herausforderung der Erstellung von MySQL-Pivot-Tabellen mit dynamischen Spalten. Während die Lösung effektiv funktioniert, wenn user_id als Zeichenfolge definiert ist, schlägt sie fehl, wenn auf Ganzzahlwerte gestoßen wird.
Der bereitgestellte Codeausschnitt veranschaulicht den ersten Versuch, die Pivot-Tabelle zu erstellen. Um das Problem im Zusammenhang mit ganzzahligen user_id-Werten zu beheben, liegen die Korrekturen jedoch in der Art und Weise, wie die Spaltennamen innerhalb der dynamischen SQL-Abfrage erstellt werden.
Der ursprüngliche Code:
... GROUP_CONCAT(DISTINCT CONCAT( 'max(case when user_id = ''', user_id, ''' then score end) AS ', user_id ) ) INTO @sql
int user_id Werte verursachen das Problem, da sie direkt als Spaltennamen verwendet werden. Um dies zu beheben, müssen diese Werte in Backticks (`) eingeschlossen werden. Der korrigierte Code passt dies an:
... GROUP_CONCAT(DISTINCT CONCAT( 'max(case when user_id = ''', user_id, ''' then score end) AS `', user_id, '`' ) ) INTO @sql
Die endgültige, korrigierte Abfrage:
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;
Mit diesen Anpassungen kann die Pivot-Tabelle nun auch beim Umgang mit ganzzahligen user_id-Werten erfolgreich generiert werden.
Das obige ist der detaillierte Inhalt vonWie erstelle ich dynamische Pivot-Tabellen in MySQL mit ganzzahligen Benutzer-IDs?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!