在MySQL中使用数据透视表对列进行排序

时间:2013-11-30 18:49:17

标签: mysql sorting pivot

我想在数据透视表中对列进行排序。这是我的示例表的link,并查询我现在拥有的内容。正如您在结果中看到的那样,列的名称未排序。

我基本上是这样做的:

SELECT GROUP_CONCAT(DISTINCT
     CONCAT('MAX(CASE WHEN DATE(date) = ''', date,
            ''' THEN score END) `', DATE_FORMAT(date,'%d.%m.%Y'), '`'))
INTO @sql
FROM tabletest
ORDER BY date;

SET @sql = CONCAT('SELECT name,', @sql, ' 
                 FROM tabletest
                GROUP BY name');

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

我的列输出如下:

|    NAME | 30.11.2013 | 28.11.2013 | 27.11.2013 | 29.11.2013 |
|---------|------------|------------|------------|------------|
|   Adele |        234 |        552 |     (null) |     (null) |

我希望对这些列进行排序。

提前致谢。

1 个答案:

答案 0 :(得分:3)

只需在ORDER BY date

中添加GROUP_CONCAT即可
SELECT GROUP_CONCAT(DISTINCT
     CONCAT('MAX(CASE WHEN DATE(date) = ''', date,
            ''' THEN score END) `', DATE_FORMAT(date,'%d.%m.%Y'), '`')
            ORDER BY date)