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时,您可以使用如下方式从金额列中获取单个金额:为了简单起见,我支持此答案;除非您使用的数据库支持开箱即用的数据透视。