2015-01-09 21 views
1

MySQL pivot efficiency认沽结果执行语句到表中的MySQL

我不知道如何转动股价的表在MySQL。共识似乎是,这不是一件好事。我原本希望每一列都是一个ID号,每一行都是一个日期。

SET @@group_concat_max_len = 1000000; 
    SET @sql = NULL; 
    SELECT 
    GROUP_CONCAT(DISTINCT 
    CONCAT(
     'MAX(IF(ddate = ', 
     'ddate', 
     ',closing_price, NULL)) AS ''', 
     DATE_FORMAT(ddate,'%Y%m%d'),'''' 
    ) 
) INTO @sql 
    FROM rawdatatable; 
    SET @sql = CONCAT('SELECT idnum , ', @sql, ' FROM rawdatatable GROUP BY idnum'); 
    SELECT @sql; 
    PREPARE stmt FROM @sql; 
    EXECUTE stmt; 

有什么办法把EXECUTE语句的结果到一个表,其中每列名是不同的ddate:我通过对每列日期和每行一个ID号有更多的速度?

+1

为什么不使用临时表? – 2015-01-09 19:16:12

回答

2

改变这一行

SET @sql = CONCAT('SELECT idnum , ', @sql, ' FROM rawdatatable GROUP BY idnum'); 

SET @sql = CONCAT('CREATE TABLE blah AS SELECT idnum , ', @sql, ' FROM rawdatatable GROUP BY idnum'); 
1

尝试把结果变成像@Desolator一个临时表说。在MySQL控制台中有类似的东西

mysql>CREATE TABLE temp_result AS 
     SELECT * FROM rawdatatable 
     WHERE ...;