数据库清单:
表1  
   合同号    商品名称     应付款日期    应付款金额    实际付款日期   实际付款金额  
     HTH      SNAME       YFKRQ         YF           SFRQ         SF
1     H1        A       2008-1-1       500        2007-12-1     200
2     H1        A       2008-1-1       500        2008-1-5      300
3     H1        A       2008-2-1       600        2008-1-10     200
4     H1        A       2008-2-1       600        2008-2-15     100
5     H1        B       ...
6     H2        A       ...合同1中 A 商品分期付款第一次付款 应在08-1-1 回500元,客户分两次付清,第二次付款应在2008-2-1回600元,但只回了300元 select distinctrow hth,sname,yfkrq,yf,sum(sf) from Table1 group by hth,sname,yfkrq,yf
现在上述语句只能得到 1 应付500元,实付500元,
                     2 应付600元,实付300元。
想用一条语句计算出相同合同中同一商品应付金额合计,实际付款金额合计出问题
需要得到的是H1中A商品应付款1100元,实际付款800元,欠300元
我试过用 
  dim res as recordset ,res1 as recordset
  set res=dbs.openrecordset("select distinctrow hth,sname,yfkrq,yf,sum(sf) as sfhj from Table1 group by hth,sname,yfkrq,yf")
   set res1=dbs.openrecordset("Select distinctrow hth,sname,sum(yf) as yfhj,sum(sfhj) from res group by... ")
总提示我 res 不是一个表或一个查询,现在只能用 select ... into 先存一个表,然后再合并存储的表,很麻烦,而且数据量大时很慢,帮帮我吧,谢谢

解决方案 »

  1.   

    select hth,sname,sum(yf) ,sum(sf) from Table1 group by hth,sname 
      

  2.   

    我试过,上面的语句SF是正确的,但YF不正确,是两倍的结果
      

  3.   

    这样写sf应该是正确的,但yf好像变成了原来的两倍
      

  4.   

    哥哥花了老长时间,凑和达成了,能不能加点分?
    select distinct t1.hth,t1.sname,t2.yf,t3.sf from @kk t1,
    (select (t1.hth+t1.sname) as id,sum(t1.yf) as yf from
    (select distinct(hth+sname+convert(varchar,yfkrq)) as id,yf,hth,sname from @kk) t1
    group by t1.hth+t1.sname) t2,
    (select (hth+sname) as id,sum(sf) as sf from @kk group by (hth+sname))t3
    where t1.hth+t1.sname=t2.id and t2.id=t3.id
    把@kk换成Table1就OK了
      

  5.   

    大哥,我看的头都大了,我就一个表,怎么出来t1.t2.t3,还有函数convert是干什么用的?