我现在在做统计每个月的消费额:要用到的字段 :部门、卡号、姓名、上月余额、本月充值额、本月取款额、本月余额、本月退卡退还金额、退卡状态。我现在表在有的数据是:表1:卡的消费表:有字段:卡号、消费时间、每次消费额、每次消费后的余额表2:每月卡的余额表:有字段:年月、卡号、姓名、本月余额表3:所有的卡号表(退卡的、和失卡):姓名、卡号、部门、表4:在用的卡号表:姓名、卡号、部门表5:退卡的卡号表:姓名、卡号、部门 、退卡时间 、退给金额表6: 卡的充值和取款表:卡号,交易日期、交易额、交易类型(有取款 和充值)
请问我要如何来统计我的月末数据:我的思路是:   将“所有的卡号表”的卡号全部拿来:分两种去再去查询
1 是退卡
    卡的消费表去计算:查询本月的消费额。
    卡每月的余额表:查旬当月和上月的余额
    卡的充值表: 本月充值总额,本月的取款额
    退卡表:查询退卡的金额。2 在用卡    卡的消费表去计算:查询本月的消费额。
    卡每月的余额表:查旬当月和上月的余额
    卡的充值表: 本月充值总额,本月的取款额
  
可是这样做出来的计算机去统计的时候速度 好慢哟。听说用一个复杂的SQL语句会比较快。能不能提供相关的资料。

解决方案 »

  1.   

    我可以以了。发给你看一下。Sstr = " SELECT"
      Sstr = Sstr & " cdepartmen AS [部门],"
      
      Sstr = Sstr & " cname AS [姓名],"
      
      Sstr = Sstr & " ccalnum AS [卡号],"
      
      Sstr = Sstr & " [上月余额] =(SELECT mmoney FROM calhavemoneyh WHERE calhavemoneyh.ccalnum=calcontents.ccalnum  and datediff (month , dymonth ,'" & DTym.Value & " ') = 1) ,"
      
      Sstr = Sstr & " [本月充值额]=(SELECT SUM(minsert) FROM sendmoneytocal WHERE ccalcum =calcontents.ccalnum  and datediff (month , dsenddate ,'" & DTym.Value & " ') = 0 and (csort ='充值') ),"  Sstr = Sstr & " [本月取款额]=(SELECT SUM(minsert) FROM sendmoneytocal WHERE ccalcum =calcontents.ccalnum  and datediff (month , dsenddate ,'" & DTym.Value & " ') = 0 and (csort ='取款') ),"  Sstr = Sstr & " [本月管理费]=(SELECT SUM(mmanagemoney) FROM sendmoneytocal WHERE ccalcum =calcontents.ccalnum  and datediff (month , dsenddate ,'" & DTym.Value & " ') = 0 ),"  Sstr = Sstr & " [本月消费额]=(SELECT SUM(mspend) FROM calspend WHERE ccalnum =calcontents.ccalnum  and datediff (month , dspenddate ,'" & DTym.Value & " ') = 0),"  Sstr = Sstr & " [本月余额] =(SELECT mmoney FROM calhavemoneyh WHERE calhavemoneyh.ccalnum=calcontents.ccalnum  and datediff (month , dymonth ,'" & DTym.Value & " ') = 0) ,"
      
      Sstr = Sstr & " [退还金额余额]=0,"
      
       Sstr = Sstr & " [退卡状态]= 1"