Pivot -Tabellen in mySQL mit dynamischen Spalten
Diese Frage befasst sich mit der Herausforderung, MySQL Pivot -Tabellen mit dynamischen Spalten zu erstellen. Während die Lösung effektiv funktioniert, wenn user_id als Zeichenfolge definiert wird, fällt sie bei der Begegnung mit Ganzzahlwerten fehl.
Der bereitgestellte Code -Snippet veranschaulicht den ersten Versuch, die Pivot -Tabelle zu erstellen. Um das Problem zu beheben, das sich auf ganzzahlige Benutzer -ID -Werte bezieht, liegen die Korrekturen in der Art und Weise, wie die Spaltennamen in der dynamischen SQL -Abfrage aufgebaut sind.
Der Originalcode:
... 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 (`) eingewickelt 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 jetzt auch beim Umgang mit ganzzahligen user_id -Werten erfolgreich generiert werden.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3