我想在数据透视表中对列进行排序。这是我的示例表的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) |
我希望对这些列进行排序。
提前致谢。
答案 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)