有一个表,像这样
客户id 商品id 价格 折扣额 日期
1 2 30 9-5
1 2 60 9-6
2 3 25 9-5
...
现在每一个客户id有一个折扣率和最大折扣额,用游标循环去用每一个价格去乘以折扣率 将折扣额显示在后面折扣额下 但同一客户累计折扣额不能超过最大折扣额 这个在游标循环中怎么写判断?
现在是对于不同客户,如果我第一条就超过最大折扣额了怎么跳出去循环下一个客户 还有如果循环到这个客户下最后一条,之前累计的折扣加上这条超过了最大折扣额 后面只能显示剩下的折扣额
相当于循环一次计算一次,用计算结果去和最大折扣额比较,如果大于就将最大折扣额写入后面并跳出当前客户 从下一个客户开始循环 如果小于就将这个计算结果放入一个变量中,这个变量接受当前客户所有的计算结果和 直到大于或等于最大折扣额
看的我直迷糊,我怎么感觉写个查询就能计算出你要的结果呢?
我现在也被弄的有点迷糊了,他是一个循环嵌套问题 折扣率和最大折扣额在另一张表中 最后要做一个更新操作
@SH一03: 那你说说这个循环都是干啥的
@刘宏玺: 第一个循环根据客户id不同分别计算单价和数量 第二个循环是算折扣 最后更新
@SH一03: 我好像有点理解了
现在是对于不同客户,如果我第一条就超过最大折扣额了怎么跳出去循环下一个客户 还有如果循环到这个客户下最后一条,之前累计的折扣加上这条超过了最大折扣额 后面只能显示剩下的折扣额
这块你加一个order by 折扣额 不就得了
@刘宏玺: 但这个折扣额之前是空的啊 我是要计算之后更新才有的
@SH一03: 你的折扣额可以直接查询出来啊 select 价格*折扣率 from 表
@刘宏玺: 我这个折扣率和最大折扣额是在另一张表里面的 而且对不同客户折扣率不同
@SH一03: 加个left join 还是可以查出来的
@刘宏玺: 我试试
@SH一03: 谢谢 我做出来了
group by 客户, 没必要游标。