私は2つの同様のテーブル(1つは請求書用、もう1つは支払い用)を持っています.現在、両方のデータを混合したユニオンをユーザーに示しています..
Table Bills
CustomerId Amount
1 100
2 100
1 100
2 100
Table Payments
CustomerId Amount
1 100
2 100
1 100
現在、ユーザーは次の情報を確認できます
From Customer 1
Type CustomerId Amount
B 1 100
P 1 -100
B 1 100
P 1 -100
TOTAL 0
From Customer 2
Type CustomerId Amount
B 1 100
P 1 -100
B 1 100
Total 100
UNIONステートメントを使用すると、すべてが正常に機能します
現時点では、ユーザーがレコードを見ているときにバランスを維持できるように、各レコードに部分的なバランスを表示する必要があります..
このように... (望ましい)
From Customer 1
Type CustomerId Amount Partial
B 1 100 100
P 1 -100 0
B 1 100 100
P 1 -100 0
私はすでに @Partial := @Partial + Amount のような変数を使用しようとしましたが、最初の部分 (請求書) を最初に合計し、次に残り (支払い) を合計するようです...このように...
From Customer 1
Type CustomerId Amount Partial
B 1 100 100
P 1 -100 200
B 1 100 200
P 1 -100 100
最初に請求書からすべてを合計してから減算を開始するようです...誰もそれを解決する方法を知っていますか?
** * ** * // 更新 // * ** * ****
ここで元のクエリ...
(「Bill」を cType 、b.type、b.tal、「Customer」、b.number、b.date、b.subtot、b.tax、IF(b.type='CA' または b.type= として選択) 'CB' or b.type='CC' or b.type='CX',b.total*-1,b.total) as total FROM bills b WHERE b.idcustomer='000140') UNION ALL (SELECT ' Payment' as cType, 'CO' , '1' , '' , c.idcash , c.date , 0 ,0 , -c.amount FROM cash c WHERE c.idcustomer='000140' and ( c.type=' CO' または c.type='DM') ) 日付順 asc;
これはこのようなものをもたらします
請求書 FX 1 顧客 9 2011-02-25 0.00 0.00 100.00
支払い CO 1 37 2011-03-04 0.00 0.00 -100.00
請求書 FX 1 顧客 616 2011-03-23 0.00 0.00 100.00
支払い CO 1 751 2011-04-12 0.00 0.00 -100.00
請求書 FX 1 顧客 1267 2011-04-27 0.00 0.00 100.00
支払い CO 1 1157 2011-05-10 0.00 0.00 -100.00
請求書 FX 1 顧客 1974 2011-05-26 0.00 0.00 100.00
支払い CO 1 1654 2011-06-08 0.00 0.00 -100.00
次に、patiarsを合計しようとすると...次のコードを使用します
@running_total=0 を設定します。(「Bill」を cType 、b.type、b.tal、「Customer」、b.number、b.date、b.subtot、b.tax、IF(b.type='CA' または b.type= として選択) 'CB' or b.type='CC' or b.type='CX',b.total*-1,b.total) as total, ( @running_total := @running_total + total) AS RunningTotal FROM bills b WHERE b.idcustomer='000140') UNION ALL ('Payment' を cType, 'CO' , '1' , '' , c.idcash , c.date , 0 ,0 , -c.amount, ( @running_total : = @running_total-c.amount) AS RunningTotal FROM 現金 c WHERE c.idcustomer='000140' and ( c.type='CO' or c.type='DM') ) 日付順 asc;
結果...
請求書 FX 1 顧客 9 2011-02-25 0.00 0.00 100.00 100.00
支払 CO 1 37 2011-03-04 0.00 0.00 -100.00 1905.00
請求書 FX 1 顧客 616 2011-03-23 0.00 0.00 100.00 200.00
支払い CO 1 751 2011-04-12 0.00 0.00 -100.00 1805.00
請求書 FX 1 顧客 1267 2011-04-27 0.00 0.00 100.00 300.00
支払い CO 1 1157 2011-05-10 0.00 0.00 -100.00 1705.00
ご覧のとおり、最初に請求書からすべてを合計し、次に支払いから減算を開始するようです...