如何计算多个订单的取消量
本文介绍了计算多个订单数量的全过程,运行数据库环境:SQL Server 2005,与大家分享。下一张图片是订单清单。当前金额为1700,订单数量按订单号进行核对。
当订单6支付,付款金额不足,只有200支付,和回订单金额为0。
1。基础数据准备
创建表# T
(id int,
Dingdan VARCHAR(20),
销售的钱
)
插入# T值(1,A,100);
插入# T值(2,B,200);
插入# T值(3,C,300);
插入# T值(4,会',400);
插入# T值(5,e,500);
插入# T值(6,F,600);
插入# T值(7 g,700);
插入# T值(8,H,800);
插入# T值(9,i,900);
插入# T值(10,J,1000);
解决这个问题的想法如下:
首先计算每个订单之前要注销的总金额,然后再加上这次要注销的订单数量,与1700相比。
如果总金额小于1700,订单金额可以完全注销,否则,它只能注销订单的一部分。
在此订单前所有订单金额之和为1700—。
X1
作为t1.id(选择,
t1.dingdan,
t1.sale,
(选择空(SUM(T2。买卖),0)
从# T T2
在t2.id < t1.id
作为curr_sale_sum)--所有订单金额在本命令
从# T T
),计算注销的数量。
X2
选择id,
Dingdan,
销售,
当curr_sale_sum +销售再销售< = 1700
其他1700 curr_sale_sum
最后new_sale
从X1
)
注销量为负数,然后改为0 *
选择id作为序列号,
Dingdan序,
销售订单金额,
当new_sale<0 0
其他new_sale
以取消金额结束
从X2
因为分析的功能不能被用来解决这个问题,我们必须使用标量子查询来达到相同的效果。当然,提供的数据有一定的局限性。
如果序列号不是连续的,我的SQL的直接应用是不能解决的,你需要为自己生成连续的序列号。
结果如下:
以上是关于计算总订单数量的思路,解决问题的数量,希望能帮到你学习。