Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.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
Mysql 如何使用codeigniter活动记录模式将行转换为列?_Mysql_Codeigniter_Activerecord - Fatal编程技术网

Mysql 如何使用codeigniter活动记录模式将行转换为列?

Mysql 如何使用codeigniter活动记录模式将行转换为列?,mysql,codeigniter,activerecord,Mysql,Codeigniter,Activerecord,这是我的桌子 +------+------+-------------+ | sid | cid | amount | +------+------+-------------+ | 32 | 1 | 500 | +------+------+-------------+ | 33 | 1 | 300 | +------+------+-------------+ | 32 | 2 | 500 | +--

这是我的桌子

+------+------+-------------+
| sid  | cid  | amount      |
+------+------+-------------+
| 32   | 1    | 500         |
+------+------+-------------+
| 33   | 1    | 300         |
+------+------+-------------+
| 32   | 2    | 500         |
+------+------+-------------+
| 33   | 2    | 400         |
+------+------+-------------+
| ..   | .    | ...         |
+------+------+-------------+
| ..   | .    | ...         |
+------+------+-------------+
| 32   | n    | 100         |
+------+------+-------------+
| 33   | n    | 100         |
+------+------+-------------+
在我看来,我想在我看来

+------+----------+-----------+------+------------+------------+
| sid  | amount(1)| amount(2) |  ... | amount(n)  |Total amount|
+------+----------+-----------+------+------------+------------+
| 32   | 500      | 500       |  ... | 100        |1100        |
+------+----------+-----------+------+------------+------------+
| 33   | 300      | 400       |  ... | 100        |800         |
+------+----------+-----------+------+------------+------------+

我该怎么做呢?

您可以使用SQL的
GROUP\u CONCAT
SUM
GROUP
子句。但是,“金额”不会有多个列。sid的金额列表将全部列在一列中,值用逗号分隔

SELECT sid,
       GROUP_CONCAT(amount) AS amount,
       SUM(amount) AS total
FROM mytbl
GROUP BY sid;

这可以通过动态透视查询完成。这不是合并;这是一个支点。请参阅@RayToal我应该在标题中写什么?@Alvi_1987 php/mysql如何将行转换为列使用php时,您可以使用如下方式从金额列中获取单个金额:为了简单起见,我支持此答案;除非您使用的数据库支持开箱即用的数据透视。