客户 类型 应收 还款 应还日 实还日期         罚款
甲 A 20 2012/5/10 0
甲 A 30 2012/5/10 0
甲 B 40 2012/5/10 0
甲 B 50 2012/5/10 0
乙 C 60 2012/5/10 0
乙 C 70 2012/5/10 0
乙 C 80 2012/5/10 0 1、提取应还日,将当前时间减去应还日时间大于5天的提取出来。
2、然后对客户所有的应收进行求和判断,如果还款合计为0,那么,就进行罚款
3、罚款的公式为,应收*0.1,如果小于5 ,则为5,然后更新罚款金额
结果如下:
客户 类型 应收 还款 应还日 实还日期 罚款
甲 A 20 2012/5/10 5
甲 A 30 2012/5/10 5
甲 B 40 2012/5/10 5
甲 B 50 2012/5/20 0
乙 C 60 2012/5/21 0
乙 C 70 2012/5/11 7
乙 C 80 2012/5/15 0

解决方案 »

  1.   


    去除日期字段,可以对每个客户以及类型进行汇总。
    Select 客户,类型,Sum(IsNull(应收,0)) As 应收,Sum(IsNull(还款,0)) As 还款,应还日,实还日期,
    Case When Sum(IsNull(还款,0)) = 0 Then
      Case When Sum(IsNull(还款,0)*0.1) < 5 Then 5 Else Sum(IsNull(还款,0)*0.1) End
    End As 罚款
    From 表
    Where DateDiff(Day,应还时间,GetDate()) > 5
    Group By 客户,类型,应还日,实还日期