这是我的表的结构:
然后我运行一个查询
SELECT `date`,`index_name`,`results` FROM `mst_ind` WHERE `index_name` IN ('MSCI EAFE Mid NR USD', 'Alerian MLP PR USD') AND `time_period`='M1'
得到一张像
如何将“index_name”行转换为如下列:
日期 | MSCI EAFE Mid NR 美元 | Alerian MLP PR USD等
换句话说,我需要每列代表一个索引和行来代表日期结果。我知道 MySQL 没有数据透视表功能。最简单的方法是什么?
我试过这段代码,但它会产生一个错误:
SELECT
`date`,
MAX(IF(index_name = 'Alerian MLP PR USD' AND `time_period`='M1', results, NULL)) AS res1,
MAX(IF(index_name = 'MSCI EAFE Mid NR USD' AND `time_period`='M1', results, NULL)) AS res2
FROM
`mst_ind`
GROUP BY `date
我需要在查询级别进行转换 - 而不是 PHP。请提出一个漂亮而优雅的解决方案。谢谢!