Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MYSQL动态交叉表问题_Php_Mysql_Codeigniter_Pivot_Crosstab - Fatal编程技术网

Php 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 | +------+-------+-------+ 致

我是新手

我正在使用codeigniter和mysql 如何动态(名称数量可能会更改)转换表:

+------+-------+-------+
| 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