Mysql
 sql >> база данни >  >> RDS >> Mysql

mysql централна/кръстосана заявка

Докато статичният отговор на @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 с демонстрация

Що се отнася до второто, моля, изяснете какво се опитвате да направите, не е ясно.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL условно вмъкване

  2. Как да създадете нов потребител и да предоставите разрешения в MySQL

  3. Множество актуализации в MySQL

  4. PHP PDO срещу нормален mysql_connect

  5. MySQL сървърът изчерпва паметта или не се стартира