動的列を含む MySQL のピボット テーブル
この質問は、動的列を含む MySQL ピボット テーブルを作成するという課題に対処します。 user_id が文字列として定義されている場合、このソリューションは効果的に機能しますが、整数値が検出されると失敗します。
提供されたコード スニペットは、ピボット テーブルを作成する最初の試行を示しています。ただし、整数の user_id 値に関連する問題を解決するには、動的 SQL クエリ内での列名の構築方法が修正されます。
元のコード:
... GROUP_CONCAT(DISTINCT CONCAT( 'max(case when user_id = ''', user_id, ''' then score end) AS ', user_id ) ) INTO @sql
int user_id値は列名として直接使用されているため、問題が発生します。これに対処するには、これらの値をバックティック (`) で囲む必要があります。修正されたコードは次を調整します:
... GROUP_CONCAT(DISTINCT CONCAT( 'max(case when user_id = ''', user_id, ''' then score end) AS `', user_id, '`' ) ) INTO @sql
最後の修正されたクエリ:
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;
これらの調整により、整数の user_id 値を処理する場合でもピボット テーブルを正常に生成できるようになりました。
以上がMySQL で整数のユーザー ID を使用して動的ピボット テーブルを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。