我有一个表 是客户在我们公司购买物品的价格表 (想把他算成积分的一块钱一点积分) 表里面有很多的记录 列有 标识列 公司名称 花费金额 消费日期 就这四项项 我是这样的 客户公司可以把自己在我们公司消费的钱通过一块钱一积分算成积分 然后可以兑换物品 假如现在又个客户兑换了物品 花费了12000的积分(也就是他们在我们公司花费的12000块钱)但是在我的表里 他们是分日期花费的嘛 假如是好长时间下来才积攒的20000积分 现在他们花费积分后我就想从最早的日期开始删除所有的积分加起来等于12000的行 (当然可能出现把行里面的积分减去一定数才能刚好到12000积分的情况 也要考虑到)这样我就是在是不知道SQL语句该怎么写了
单独做表单独存关于积分的进出记录,,,
使用正或负作为积分的使用,和增加,只记录当月的进出操作,,,做月结操作累计到下面表
再做一个表作为积分汇总记录,,,一个用户一行记录,,,记录上个月末积分合计结余
每次获取用户积分数时,用汇总表+当月积分合计,,,
set @sum=0
select @sum=max(clos) from
(
select *,(select sum(花费金额) from t where t.消费日期<=a.消费日期) as clos
from t as a
where 公司名称 ='xx'
) tb
where 公司名称 ='xx' and clos<=25
if @sum=25
select 'ok'
else
select 25-@sum然后你要删除就
delete t from t as t1
inner join
(
select 公司名称,消费日期 from
(
select *,(select sum(花费金额) from t where t.消费日期<=a.消费日期) as clos
from t as a
where 公司名称 ='xx'
) tb
where 公司名称 ='xx' and clos<=12000
) as t2 on t1.公司名称=t2.公司名称 and t1.消费日期 =t2.消费日期然后剩下的数 25-@sum
你再随便找笔去update就行了
SQL不多练习就会退步拉-0-
你碰到的问题说不定明天我也会碰到-0-
既然现在闲着就帮你下忙而已