SQL如何写 100
A表和B表数据会随着录入而增加,我想得到一个表三个字段,第一个字段:学号,第二个:该学号对应的费用和,第三个字段:费用刚刚超过1000、2000、10000时的时间。(拿...
A表和B表数据会随着录入而增加,我想得到一个表三个字段,第一个字段:学号,第二个:该学号对应的费用和,第三个字段:费用刚刚超过1000、2000、10000时的时间。(拿101号举例.达到1000的时间是7:20,记录下来,但是在15:21时他的费用和达到了1500不记录时间,后期达到2000时再把7:20替换掉)
展开
1个回答
展开全部
你这个不是一个单纯的sql而是触发器(触发器里面是一个plsql块,带判断的)。
触发条件是after insert b,也就是b表输入以后。
为了方便,建议在新建立的表里加一个总费用字段,这样好计算一些。
(1)你要查询A表是否已经输入,(我不知道你的输入顺序,如果能确保A比B早,那么不用查询A表是否输入。)这个比较简单只要查询单号是否存在就可以了,如果存在那么继续执行。
(2)在本表中找相应的学号,如果没有那么就insert。
(3)判断金额,就是你说的1000,2000,10000,如果是,那么就update。判断的方式也简单,如果原来不存在这个学号,那么就直接判断,如果存在那么用原来的加上这次的。判断条件分别为
原费用<1000 and 原费用+这次费用>1000,其他的两个判断和这个类似。如果判断成功,那么就update,否则不改。
个人能想到的就是这个方法,不过具体的需要一些试验才行,我还不到直接就能写出来的地步,而且肯定要经过修改的,这里可没有环境,只能你自己慢慢改了。
触发条件是after insert b,也就是b表输入以后。
为了方便,建议在新建立的表里加一个总费用字段,这样好计算一些。
(1)你要查询A表是否已经输入,(我不知道你的输入顺序,如果能确保A比B早,那么不用查询A表是否输入。)这个比较简单只要查询单号是否存在就可以了,如果存在那么继续执行。
(2)在本表中找相应的学号,如果没有那么就insert。
(3)判断金额,就是你说的1000,2000,10000,如果是,那么就update。判断的方式也简单,如果原来不存在这个学号,那么就直接判断,如果存在那么用原来的加上这次的。判断条件分别为
原费用<1000 and 原费用+这次费用>1000,其他的两个判断和这个类似。如果判断成功,那么就update,否则不改。
个人能想到的就是这个方法,不过具体的需要一些试验才行,我还不到直接就能写出来的地步,而且肯定要经过修改的,这里可没有环境,只能你自己慢慢改了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询