sql >> Database teknologi >  >> RDS >> Mysql

mysql pivot/krydstabel-forespørgsel

Selvom @Johns statiske svar fungerer godt, hvis du har et ukendt antal kolonner, som du vil transformere, ville jeg overveje at bruge forberedte udsagn for at få resultaterne:

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;

se SQL Fiddle with Demo

For så vidt angår dit andet, bedes du præcisere, hvad du prøver at gøre, det er ikke klart.



  1. Postgres holdt lige tilfældigt op med at virke (Rails, PGSQL.5432)

  2. Oracle Kombiner flere kolonner til én

  3. konverter php-dato til mysql-format

  4. Afgrænsere i MySQL