sql >> Database >  >> RDS >> Mysql

mysql draai-/kruistabelquery

Hoewel het statische antwoord van @John prima werkt, zou ik, als je een onbekend aantal kolommen hebt dat je wilt transformeren, overwegen om voorbereide instructies te gebruiken om de resultaten te krijgen:

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;

zie SQL Fiddle met demo

Wat uw tweede betreft, verduidelijk alstublieft wat u probeert te doen, het is niet duidelijk.



  1. SQL update velden van een tabel uit velden van een andere

  2. SQL Server-groep op telling van datum/tijd per uur?

  3. SQL juiste join

  4. Hoe een Pandas Dataframe naar Django-model te schrijven?