我现在有两个类似的表(一个用于账单,另一个用于付款),现在我向用户显示来自两者的联合混合数据..
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 语句一切正常
现在我需要在每条记录上显示部分余额,以便用户在查看记录时可以记住 balanca..
像这样……(渴望)
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' 或 b.type='CC' 或 b.type='CX',b.total*-1,b.total) 作为来自账单 b 的总额 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') ) 按日期排序;
这带来了这样的东西
Bill FX 1 客户 9 2011-02-25 0.00 0.00 100.00
付款 CO 1 37 2011-03-04 0.00 0.00 -100.00
Bill FX 1 客户 616 2011-03-23 0.00 0.00 100.00
付款 CO 1 751 2011-04-12 0.00 0.00 -100.00
Bill FX 1 客户 1267 2011-04-27 0.00 0.00 100.00
付款 CO 1 1157 2011-05-10 0.00 0.00 -100.00
Bill 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' 或 b.type='CC' 或 b.type='CX',b.total*-1,b.total) 作为总计,(@running_total := @running_total + total)作为 RunningTotal 来自账单 b WHERE b.idcustomer='000140') UNION ALL (SELECT 'Payment' as cType, 'CO' , '1' , '' , c.idcash , c.date , 0 ,0 , -c.amount, (@running_total : = @running_total-c.amount) AS RunningTotal FROM cash c WHERE c.idcustomer='000140' and (c.type='CO' or c.type='DM') ) 按日期排序;
结果...
Bill 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
Bill 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
Bill 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
如您所见,似乎首先从账单中求和,然后从付款中开始减去...