如何将单笔订单表转化成累加订单表

bravility
  • 239

有表1如下

id name money time
1 mike 6 2016-09-01
2 mike 648 2016-09-01
3 leo 488 2016-09-02
4 mike 6 2016-09-03

如何获得以下表2内容

id name amount time
1 mike 6 2016-09-01
2 mike 654 2016-09-01
3 leo 488 2016-09-02
4 mike 660 2016-09-03
回复
阅读 2.6k
6 个回答

目前自己也想到了一种方式,不知道还有没有更优的相互比较学习一下

select id,name,(select sum(money) from test b where b.name = a.name and b.time <= a.time) as amount,time from test a

谢邀,试试这句~

    SELECT a.id,a.name,SUM(lt.money)  as amount
    FROM test a JOIN test lt 
    ON a.time >= lt.time//如果时间是递增的可以使用id判断
    GROUP BY a.money
    ORDER BY id

谢谢邀请。是要累加amount字段吗?用用户id做条件累加不可以吗?

可以看看sql中的union关键字

感觉sql并不擅长做这种事,放在代码里面运算会比较好。

如果是每个用户一条记录的话,那group by + sum即可。

这是存储过程

DELIMITER $$
DROP PROCEDURE IF EXISTS `get_totaltab`$$
CREATE PROCEDURE `get_totaltab`()
BEGIN
  declare i int default 1;
  while i < 5
  do
    INSERT INTO  book_copy SELECT max(id),name,sum(money),max(time) from book where name=(SELECT name FROM book where id=i) and id<=i;
    set i = i + 1;
  end while;
END$$
DELIMITER ;
CALL get_totaltab()

这是结果,如下所示

1    mike    6      2016-09-01
2    mike    654    2016-09-01
3    leo     488    2016-09-02
4    mike    660    2016-09-03
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏