2015-01-09 49 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 ...;