首页新闻找找看学习计划

sqlserver游标循环

0
悬赏园豆:5 [已解决问题] 解决于 2016-02-04 17:35

有一个表,像这样

客户id   商品id   价格   折扣额   日期

1      2         30                9-5

1      2         60                9-6

2      3         25                9-5

...

现在每一个客户id有一个折扣率和最大折扣额,用游标循环去用每一个价格去乘以折扣率 将折扣额显示在后面折扣额下  但同一客户累计折扣额不能超过最大折扣额 这个在游标循环中怎么写判断?

  现在是对于不同客户,如果我第一条就超过最大折扣额了怎么跳出去循环下一个客户  还有如果循环到这个客户下最后一条,之前累计的折扣加上这条超过了最大折扣额 后面只能显示剩下的折扣额

问题补充:

相当于循环一次计算一次,用计算结果去和最大折扣额比较,如果大于就将最大折扣额写入后面并跳出当前客户 从下一个客户开始循环    如果小于就将这个计算结果放入一个变量中,这个变量接受当前客户所有的计算结果和 直到大于或等于最大折扣额

SH一03的主页 SH一03 | 初学一级 | 园豆:185
提问于:2016-02-04 11:49
< >
分享
最佳答案
0

看的我直迷糊,我怎么感觉写个查询就能计算出你要的结果呢?

收获园豆:5
刘宏玺 | 专家六级 |园豆:14004 | 2016-02-04 12:55

我现在也被弄的有点迷糊了,他是一个循环嵌套问题 折扣率和最大折扣额在另一张表中 最后要做一个更新操作

SH一03 | 园豆:185 (初学一级) | 2016-02-04 12:58

@SH一03: 那你说说这个循环都是干啥的

刘宏玺 | 园豆:14004 (专家六级) | 2016-02-04 12:59

@刘宏玺: 第一个循环根据客户id不同分别计算单价和数量 第二个循环是算折扣 最后更新

SH一03 | 园豆:185 (初学一级) | 2016-02-04 13:02

@SH一03: 我好像有点理解了

现在是对于不同客户,如果我第一条就超过最大折扣额了怎么跳出去循环下一个客户  还有如果循环到这个客户下最后一条,之前累计的折扣加上这条超过了最大折扣额 后面只能显示剩下的折扣额

这块你加一个order by 折扣额 不就得了

刘宏玺 | 园豆:14004 (专家六级) | 2016-02-04 13:05

@刘宏玺: 但这个折扣额之前是空的啊 我是要计算之后更新才有的

SH一03 | 园豆:185 (初学一级) | 2016-02-04 13:07

@SH一03: 你的折扣额可以直接查询出来啊 select 价格*折扣率 from 表

刘宏玺 | 园豆:14004 (专家六级) | 2016-02-04 13:08

@刘宏玺: 我这个折扣率和最大折扣额是在另一张表里面的 而且对不同客户折扣率不同

SH一03 | 园豆:185 (初学一级) | 2016-02-04 13:13

@SH一03: 加个left join 还是可以查出来的

刘宏玺 | 园豆:14004 (专家六级) | 2016-02-04 13:14

@刘宏玺: 我试试 

SH一03 | 园豆:185 (初学一级) | 2016-02-04 13:15

@SH一03: 谢谢 我做出来了

SH一03 | 园豆:185 (初学一级) | 2016-02-04 17:34
其他回答(1)
0

group by 客户, 没必要游标。

Firen | 园豆:5483 (大侠五级) | 2016-02-04 14:19
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册