Php MYSQL动态交叉表问题
我是新手 我正在使用codeigniter和mysql 如何动态(名称数量可能会更改)转换表:Php MYSQL动态交叉表问题,php,mysql,codeigniter,pivot,crosstab,Php,Mysql,Codeigniter,Pivot,Crosstab,我是新手 我正在使用codeigniter和mysql 如何动态(名称数量可能会更改)转换表: +------+-------+-------+ | date | name | value | +------+-------+-------+ | 06-01| A | 1 | | 06-02| A | 2 | | 06-02| B | 3 | | 06-03| C | 4 | +------+-------+-------+ 致
+------+-------+-------+
| date | name | value |
+------+-------+-------+
| 06-01| A | 1 |
| 06-02| A | 2 |
| 06-02| B | 3 |
| 06-03| C | 4 |
+------+-------+-------+
致:
?
谢谢。像这样的东西应该可以用
SELECT date,
SUM(IF(name='A',value,0)) AS 'A',
SUM(IF(name='B',value,0)) AS 'B',
SUM(IF(name='C',value,0)) AS 'C'
FROM myTable
GROUP BY date
ORDER BY date
您需要知道您的列名可以是什么,以便将每个和手动添加到SQL语句中,但是如果可能会有很大的变化,您可以使用PHP来实现这一点
同样,如果您只想计算每个名称出现的次数,而不是
name
中的值的总数,请将value
替换为1
,我想,对于交叉表和其他查询,您的意思是GROUP BY date
,请签出这个很棒的页面:
SELECT date,
SUM(IF(name='A',value,0)) AS 'A',
SUM(IF(name='B',value,0)) AS 'B',
SUM(IF(name='C',value,0)) AS 'C'
FROM myTable
GROUP BY date
ORDER BY date