首页 > 解决方案 > am 的 over() 子句错误计算基于 id 到 mysql 中下一个或上一个值的行

问题描述

我遇到了一个问题,即我的查询没有执行,并且在 over 子句附近出现错误,但我想要如下图所示的结果: 在此处输入图像描述

我的意思是我想要像 25000-9000 =16000 这样的结果;16000-5000 =11000;像那些家伙一样显示输出,这是我的查询

query:
SELECT s.id, s.cust_id, 
s.package_name,s.pending_amount,s.pack_received_amount, s.return_amount, 
s.payment_type,s.total_package_amount, SUM('s.pending_amount') OVER (ORDER 
BY s.id ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW AS s.balance FROM 
payment s WHERE s.cust_id = S1307 and s.package_name= switzerland

我的错误是这里的图片截图:

标签: phpmysqlsqlcodeigniter-2

解决方案


SELECT Total,
Received,
CASE WHEN @balance = 0 THEN
(@balance := Total - Received) 
ELSE 
@balance := @balance - Received
END AS Balance
FROM
Table1,
(select @balance:=0) as t2

表格1

Total   Received
-----------------
25000   9000
25000   5000

输出

Total   Received    Balance
----------------------------
25000   9000        16000
25000   5000        11000

演示

http://sqlfiddle.com/#!9/43cc31/18


推荐阅读