Опитайте следното текущо общо:http://www.sqlfiddle.com/#!2/ ce765/1
изберете оферта като не, стойност, @rt :=if(aid =@last_id, @rt + стойност, стойност) като общо, @last_id :=aidfrom table_b b, (изберете @rt :=0 като x, @last_id :=null) като подреждане на опции по b.bid, b.aid;
Изход:
<предварителен код>| НЕ | СТОЙНОСТ | ОБЩО | @LAST_ID :=ПОМОЩ ||----|-------|-------|-----------------|| 1 | 10 | 10 | 1 || 2 | 15 | 25 | 1 || 3 | 5 | 5 | 2 || 4 | 10 | 15 | 2 || 5 | 25 | 25 | 3 || 6 | 40 | 65 | 3 |След това се присъединете към таблица А, последна заявка:
изберете x.no, x.aid, x.value, x.total, a.value - x.total като баланс от( изберете оферта като не, помощ, стойност, @rt :=if(aid =@last_id, @rt + стойност, стойност) като общо, @last_id :=помощ от table_b b, (изберете @rt :=0 като x, @last_id :=null) като vars подреждане по b.bid, b.aid) като xjoin table_a a using(aid)
Изход:
<предварителен код>| НЕ | ПОМОЩ | СТОЙНОСТ | ОБЩО | БАЛАНС ||----|-----|-------|-------|---------|| 1 | 1 | 10 | 10 | 90 || 2 | 1 | 15 | 25 | 75 || 3 | 2 | 5 | 5 | 45 || 4 | 2 | 10 | 15 | 35 || 5 | 3 | 25 | 25 | 125 || 6 | 3 | 40 | 65 | 85 |Тест на живо:http://www.sqlfiddle.com/#!2/ce765/ 1
АКТУАЛИЗИРАНЕ
Не зависи от оферта в графа сортирането, текущата сума при групиране няма да бъде засегната:http://www.sqlfiddle. com/#!2/6a1e6/3
изберете x.no, x.aid, x.value, x.total, a.value - x.total като баланс от (изберете @rn :=@rn + 1 като не, помощ, стойност, @ rt :=if(aid =@last_id, @rt + стойност, стойност) като общо, @last_id :=помощ от table_b b, (изберете @rt :=0 като x, @last_id :=null, @rn :=0 ) като vars подреждане по b.aid, b.bid) като xjoin table_a a using(aid)
Изход:
<предварителен код>| НЕ | ПОМОЩ | СТОЙНОСТ | ОБЩО | БАЛАНС ||----|-----|-------|-------|---------|| 1 | 1 | 10 | 10 | 90 || 2 | 1 | 15 | 25 | 75 || 3 | 1 | 7 | 32 | 68 || 4 | 2 | 5 | 5 | 45 || 5 | 2 | 10 | 15 | 35 || 6 | 3 | 25 | 25 | 125 || 7 | 3 | 40 | 65 | 85 |Тест на живо:http://www.sqlfiddle.com/#!2/6a1e6/ 3