虽然@John的静态答案很好用,但是如果您要转换的列数未知,我会考虑使用准备好的语句来获取结果:
SET @sql = NULL;SELECt GROUP_CONCAt(DISTINCT CONCAt( 'GROUP_CONCAt((CASE node_id when ', node_id, ' then entered_value else NULL END)) AS user_input', node_id ) ) INTO @sqlFROM trn_user_log;SET @sql = CONCAt('SELECt app_id, transaction_id, mobile_no, ', @sql, ' FROM trn_user_log GROUP BY app_id, transaction_id, mobile_no');PREPARE stmt FROM @sql;EXECUTE stmt;DEALLOCATE PREPARE stmt;参见带有演示的SQL Fiddle
至于您的第二个,请说清楚您要做什么。



