Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Pivot-/Kreuztabellenabfrage

Die statische Antwort von @John funktioniert zwar hervorragend, aber wenn Sie eine unbekannte Anzahl von Spalten haben, die Sie transformieren möchten, würde ich die Verwendung vorbereiteter Anweisungen in Betracht ziehen, um die Ergebnisse zu erhalten:

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;

siehe SQL-Fiddle mit Demo

Als zweites erklären Sie bitte, was Sie versuchen, es ist nicht klar.