Mặc dù câu trả lời tĩnh của @ John hoạt động tuyệt vời, nhưng nếu bạn có một số lượng cột không xác định mà bạn muốn chuyển đổi, tôi sẽ cân nhắc sử dụng các câu lệnh đã chuẩn bị để nhận được kết quả:
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 @sql
FROM 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;
Trong trường hợp thứ hai của bạn, vui lòng làm rõ những gì bạn đang cố gắng làm điều đó không rõ ràng.