讨教各位大神:遇到了一个查询的问题,例如数据库中有三个字段,c_name,c_money,c_date 分别代表客户姓名,消费金额,消费的日期。
现在想要查询,客户首次累计消费达到1万元的那个日期(就是说从第一笔累加到>=10000元的那个首次日期,提取出来日期).只想用存储过程完成,有个模糊的思路是,定义变量sum,时间、姓名排序,查出金额,获取第一个金额,while 金额小于10w,游标向下移动,sum+=金额。各位大大有没有更好的方法呢?
问一下假如只用存储过程的话,具体应该怎么做啊,十分感谢!
c_name c_money c_date
张三 4000 2015/1/5
张三 4000 2015/1/5
小红红 50000 2015/1/6
李四 3000 2015/1/13
张三 4000 2015/1/14
小明明 3000 2015/1/15
李四 2000 2015/1/19
李四 3000 2015/1/20
李四 2000 2015/1/20
小红红 3000 2015/1/20
张三 80000 2015/1/20
张三 50000 2015/1/20
李四 70000 2015/1/21
小红红 2000 2015/1/21
小明明 2000 2015/1/22
小红红 90000 2015/1/23
小红红 100000 2015/1/23
小红红 50000 2015/1/23
小明明 3000 2015/1/23
张三 100000 2015/1/23
小明明 2000 2015/1/27
张三 300000 2015/1/27
李四 4000 2015/1/28
小明明 11200 2015/1/28
张三 50000 2015/1/28
李四 125000 2015/1/29
小红红 12500 2015/1/29
张三 4000 2015/1/29
李四 50000 2015/1/30
小明明 250000 2015/1/30
现在想要查询,客户首次累计消费达到1万元的那个日期(就是说从第一笔累加到>=10000元的那个首次日期,提取出来日期).只想用存储过程完成,有个模糊的思路是,定义变量sum,时间、姓名排序,查出金额,获取第一个金额,while 金额小于10w,游标向下移动,sum+=金额。各位大大有没有更好的方法呢?
问一下假如只用存储过程的话,具体应该怎么做啊,十分感谢!
c_name c_money c_date
张三 4000 2015/1/5
张三 4000 2015/1/5
小红红 50000 2015/1/6
李四 3000 2015/1/13
张三 4000 2015/1/14
小明明 3000 2015/1/15
李四 2000 2015/1/19
李四 3000 2015/1/20
李四 2000 2015/1/20
小红红 3000 2015/1/20
张三 80000 2015/1/20
张三 50000 2015/1/20
李四 70000 2015/1/21
小红红 2000 2015/1/21
小明明 2000 2015/1/22
小红红 90000 2015/1/23
小红红 100000 2015/1/23
小红红 50000 2015/1/23
小明明 3000 2015/1/23
张三 100000 2015/1/23
小明明 2000 2015/1/27
张三 300000 2015/1/27
李四 4000 2015/1/28
小明明 11200 2015/1/28
张三 50000 2015/1/28
李四 125000 2015/1/29
小红红 12500 2015/1/29
张三 4000 2015/1/29
李四 50000 2015/1/30
小明明 250000 2015/1/30
解决方案
30
select * from 例如数据库中有三个字段 t where (select sum(c_money) from 例如数据库中有三个字段 where c_name=t.c_name and c_date<t.c_date) between 10000-c_money and 10000
10
大版的sql套到存储过程里就好了