1

新手来了

我正在使用 codeigniter 和 mysql 我如何动态地(名称的数量可能会改变)从以下位置转换表:

+------+-------+-------+
| date | name  | value |
+------+-------+-------+
| 06-01|   A   |  1    |
| 06-02|   A   |  2    |
| 06-02|   B   |  3    |
| 06-03|   C   |  4    |
+------+-------+-------+

到:

+------+---+---+---+
| date | A | B | C |
+------|---+---+---|
| 06-01| 1 |   |   |
| 06-02| 2 | 3 |   |   
| 06-03|   |   | 4 |
+------+---+---+---+

?

谢谢你。

4

1 回答 1

2

像这样的东西应该工作。

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

您需要知道列名可能是什么,才能将每个 SUM 手动添加到您的 SQL 语句中,但如果它可能会发生很大变化,您可以使用 PHP 来执行此操作。

同样,value如果1您只想计算每个名称出现的次数,而不是name.

于 2011-06-21T10:18:00.797 回答