Я хочу внести последовательную сумму в таблицу с учетом нескольких дополнительных условий.Нам нужно убедиться, что когда сумма берется последовательно, так что если идентификатор имеет +40, то следующая сумма будет 130, если следующая равна +1, сумма будет еще 130, теперь, если следующая равна -1, тосумма должна быть 129. 100 должно быть добавлено к сумме в первый раз, и оттуда только счет должен быть добавлен в зависимости от условия.Нам нужно даже ограничить минимальное значение суммы, чтобы оно не могло быть меньше 70
. Я пробовал запрос ниже, но, похоже, он не смотрит на предыдущее значение.
Примерчто я пробовал:
create table tableA (id int not null, count int not null);
insert into tableA(id, count) values(1,11), (2,21),(3, -3); -- case 1
insert into tableA(id, count) values(1,35), (2,-3); -- case 2
insert into tableA(id, count) values(1,-45),(2,67); -- case3
Запрос пытался:
select t.id, t.count,
case when (100+(select ifnull(sum(count),0) from tableA x where x.id <= t.id)) >= 130 then 130
when (100+(select ifnull(sum(count),0) from tableA x where x.id <= t.id)) <= 70 then 70
else (100+(select ifnull(sum(count),0) from tableA x where x.id <= t.id))
end as xxxx
from tableA t;
Я ожидаю, что мой вывод будет выглядеть так:
Case1 Результат:
id count Sum
1 11 111
2 21 130
3 -4 126
Case2 Result:
id count Sum
1 35 130
2 -3 127
Case3 Result:
id count Sum
1 -45 70
2 67 137