sql 查询表中某一列的数据总和刚好能等于某个数值的查询语句解决方案


需求:订单扣款,需要循环遍历每条可用积分记录,然后按订单总额逐个扣除,效率太低了,找了各个论坛找到一个比较合适的解决方案

解决方案:需sql语句和代码共同实现(ps:实在是不懂存储过程)

第一步: 

select * from (select Id,CreationTime,sum(Point) over(order by CreationTime,Id) as sumamount from PointRecord) a where a.sumamount<=100

第二步:

上面的sql语句查询的结果分为2种情况:

1.若查询出的积分总和刚好>=100,那么皆大欢喜,查询出来的数据正是我们需要的

2.若查询出的积分<100,则会缺少最后一条数据,需要在业务代码中补充

 

最终形成完全体,终于不用循环遍历查询数据库了,用此方法,2条查询语句即可搞定

参考博客:https://bbs.csdn.net/topics/392186054


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM