在 MySQL 中建立帶有整數列名的動態資料透視表是一個小小的挑戰。當執行提供的查詢時,如果 user_id 值為整數,則可能會遇到錯誤。要解決這個問題,我們需要將 user_id 值用反引號 (`) 括起來。
調整後的 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;
此處的關鍵修改是在 GROUP_CONCAT 語句中的 user_id 值周圍添加反引號。透過這樣做,我們確保 user_id 值被視為字串而不是列名。
SQL Fiddle 示範: https://sqlfiddle.com/#!2/eab24/ 4
現在,即使使用整數user_id 值,也將成功產生動態數據透視表。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3