Докато статичният отговор на @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 @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;
вижте SQL Fiddle с демонстрация
Що се отнася до второто, моля, изяснете какво се опитвате да направите, не е ясно.