SQL寻找丢失的充值数据,HOHO~

        近日一个问题困扰很久,一直找答案。

    问题描述:一台充值机不知何原因,可能是写FLASH错,但是卡上钱进去了,机器上确没有记录到那一笔充值记录。那我能通过前后的记录号判断是哪一笔丢了,大概在哪个时间内充到的这笔钱。时间为:'2010-11-23 11:52:35.000''2010-11-23 11:52:57.000'中间的一笔充值数据丢了。

    但是我总共有一W多近两W张卡,不可能一一去查个人帐来找回此笔丢失的记录,具此数据库帐本身问题也多,只能考虑进行阶段的查询,不可能去做整个的判断如总的充值-总的消费是滞等于总的卡余是行不通的。

    经过仔细的思考后,经过了这样的几步,先不记充值,我查出来'2010-11-23 11:52:35.000'这个时间前的所有的卡的最大的消费时间所对应的卡余额作为前期的卡余额,再来查出来'2010-11-23 11:52:57.000'这个时间后的最小的消费时间所对应的卡余额作为最后的卡余额并顺带查出相应的消费金额。这样,前期卡余额,消费额度,最后的卡余额都出来了,但是这两个消费时间的充值还需要统计出来。

    故再利用了一个GROUP BY 将前面统计出来的两个临时表通过卡号,然后通过时间段的限制查询出来两个消费时间内的充值总额,再进行对比,即可查出所缺失的充值记录。

 

后记:所有的数据库问题统计跟找数据肯定是有解决办法的,需要自己静下心来思考,想清楚它蹭的逻辑关系。天天学一点,天天进步一点。开始锁的研究,HOHO`加油,小江~~~~嘻嘻~

posted @ 2010-12-07 14:36 medci(卡樂江) 阅读(...) 评论(...) 编辑 收藏