Heim >Datenbank >MySQL-Tutorial >Wie erstelle ich eine dynamische Pivot-Tabelle in MySQL mit ganzzahligen Benutzer-IDs?

Wie erstelle ich eine dynamische Pivot-Tabelle in MySQL mit ganzzahligen Benutzer-IDs?

DDD
DDDOriginal
2024-11-12 22:59:02446Durchsuche

How to Create a Dynamic Pivot Table in MySQL with Integer User 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!

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