日期:2014-05-16  浏览次数:20421 次

求一条SQL运算语句,多谢!
本帖最后由 shier2817 于 2014-04-11 18:43:50 编辑
表A,存储每日营业数据,主要字段如下(为描述清晰此处我用中文假设字段名):
班次索引、起始时间、结束时间、本班收入……
表中有N条,我们随时可以对给定的时间范围 SUM 来获取总收入。
-----------------------------------------------------------
现在的要求是统一改账:就是给定个时间范围,然后再给定这个范围要修改的总金额,怎么通过SQL查询根据每天原始收入算出每天应修改的目标金额?
不是那么简单,因为每天收入不固定,可能比较多,也可能很少,这里有一个要求就是不允许每天最终修改的金额低于一个限制,就是因为这个要求,我鼓捣了很久也算不出。。。
-----------------------------------------------------------
例如,我们修改一个范围:
start = 1号,end = 30号,一共30天的数据;
30天合计原始收入 total =  SUM 这个日期范围即可;
要求修改后每天收入限制 n 为100元,就是最小每天不得低于100;
原始每天收入随机,当然可以查询的到;
现在假设要修改这30天的总收入为 x (这个目标总金额的合法性无需考虑,不会给定一个小于 天数*每天限额的数的,在例子中就是绝对不会给出小于 30*100 = 3000 的数的,同时也绝对会比原始的总收入小。当然,上面提到的原始总收入跟不会比这个3000小的。就是所有数据都会合法,不会出现无法计算的可能)。

现在我该怎么通过SELECT 来计算出按照原始日收入的比例,算出现在每天应该修改为多少收入呢?当然要满足最小限制那个条件。

万分感谢您的回答!
------解决方案--------------------

select sum(case when n-total<0 then 0 else n-total end) from 表
你要总数就这么写,要每天的就把sum去了