刚接触SQL语句不久,碰到一个难搞的题,说有一个消费表 Xlist ,记录所有人每天的消费记录,包括(id,money,date)三个字段,即客户编号、消费额、消费日期,还一个库表 Kform ,存放所有人的消费总额,包括(id,totle)两字段.
    现要写SQL语句,实现将某一天的消费记录汇总,并更新到Kform表中,问题来了,在xlist表中,对于一个id可能有多条消费记录,即多次消费,那么就要将money求和再加到Kform表中,而且又不能单纯按id字段来逐一取记录,因为可能有的人那天没有消费,而且人数可能很庞大,我听说可以用游标实现逐条记录处理,可是我是新手实在是看不懂,有没有人教教我怎么弄啊

解决方案 »

  1.   

    现要写SQL语句,实现将某一天的消费记录汇总,并更新到Kform表中该表中也没日期字段,如何记录是哪一天的呢?
      

  2.   

    lz的意思应该是 xlist 表中一天汇总,而kform 是全部汇总我想到有两个思路:
    1. 对xlist 用group by 汇总,然后逐条对kform 更新;
    2. 写个触发器,就是在对xlist 有新纪录插入时就更新kfrom,这样就可以避免逐条处理的麻烦个人比较推荐后者
      

  3.   

    update Kform k set totle = (select sum(money) from Xlist where date = 某天 and id = k.id )
    where id in  (select id from Xlist where date = 某天)
    SQL都没写明白用什么游标 数据量少用这个足矣。
      

  4.   

    update study_e e
       set e.dable =
           (select sum(d.money) money
              from study_d d
             where d.sid = e.eid
               and d.sdate =
                   to_date('2012-2-11 17:14:49', 'yyyy-MM-dd HH24:mi:ss'))
     where e.eid in (select d.sid
                       from study_d d
                      where d.sdate =to_date('2012-2-11 17:14:49', 'yyyy-MM-dd HH24:mi:ss'));