Ошибка над предложением over () для am вычисляет строки на основе идентификаторов до следующего или предыдущего значения в mysql - PullRequest
0 голосов
/ 14 декабря 2018

Я столкнулся с проблемой, когда мой запрос не выполняется, и я получаю ошибку рядом с предложением over, но мне нужен результат, как показано на рисунке ниже: enter image description here

Iзначит, я хочу результат, как 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

Моя ошибка была здесь снимок экрана, ребята:

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Это ваш запрос:

select . . .,
       sum(s.pending_amount) over (order by s.id) as balance 
from payment s 
where s.cust_id = S1307 and s.package_name = 'switzerland';

Если у вас не слишком много строк, достаточно простого подзапроса:

select . . .,
       (select sum(s2.pending_amount)
        from payment s2
        where s2.id <= s.id and
              s2.cust_id = s.cust_id and
              s2.package_name = s.package_name
       ) as balance 
from payment s 
where s.cust_id = 'S1307' and
      s.package_name = 'switzerland';
0 голосов
/ 14 декабря 2018
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

Table1

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

Выход

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

DEMO

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...