简体   繁体   English

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

[英]Sorting columns with pivot table in MySQL

I would like to sort my columns in pivot table. 我想对数据透视表中的列进行排序。 Here is a link to my example table and query what i have now. 这是指向我的示例表并查询我现在拥有的链接 As you can see in result the name of the columns are unsorted. 如您所见,结果列的名称未排序。

I'm basically doing this: 我基本上是这样做的:

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;

My column output is like this: 我的列输出是这样的:

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

And I would like to have the columns sorted. 我想对列进行排序。

Thanks in advance. 提前致谢。

Just add an ORDER BY date inside the GROUP_CONCAT : 只需在GROUP_CONCAT内添加一个ORDER BY date

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM