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