ADODataSet1.CommandText := 'select ''合同编号''=t1.ht_id,''客户名称''=max(t1.kh_khmc),''应收金额''=max(t1.ht_je), ''已收款合计''=sum(t2.skdmx_skje) from s_ht t1,s_skdmx t2 where t1.ht_id =t2.ht_id  group by t1.ht_id'
 上面的语句出来这样的DBGrid表:
合同编号(t1)客户名称(t1)  应收款(t1) 已收款(t2里几个记录相加)  
  001          上海             100(万)             30(万)
但我还想再显示一个“未收合计”的字段,所以加上下面注释的语句:ADODataSet1.CommandText := 'select ''合同编号''=t1.ht_id,''客户名称''=max(t1.kh_khmc),''应收金额''=max(t1.ht_je), ''已收款合计''=sum(t2.skdmx_skje),
    ''未收合计''=max(t1.ht_je-sum(t2.skdmx_skje))  <------我就是加了这句
 from s_ht t1,s_skdmx t2 where t1.ht_id =t2.ht_id  group by t1.ht_id'
s_ht.ht_id';
加了这句后想让表成为:
合同编号    客户名称        应收款      已收款      未收合计
  001          上海        100(万)     30(万)   70(万)但是这样不行,不能把“70(万)”这个字段给显示和计算出来,懂SQL的说说该怎么加?

解决方案 »

  1.   

    可以考虑用UNION 将两个集合并起来,但字段最好是一样多
      

  2.   

    max(t1.ht_je-sum(t2.skdmx_skje))换成max(t1.ht_je)-sum(t2.skdmx_skje)
      

  3.   

    把你的第一条语句写成一个视图:
    select 合同编号=t1.ht_id,客户名称=max(t1.kh_khmc),
           应收金额=max(t1.ht_je),已收款合计=sum(t2.skdmx_skje) 
    from s_ht t1,s_skdmx t2 
    where t1.ht_id =t2.ht_id  group by t1.ht_id
    命名为view1
    然后从view1中得到你要的东西
    select 合同编号,客户名称,应收金额,已收款合计,(应收金额-已收款合计)as 未收合计
    from view1
      

  4.   

    我还是没有解决,TechnoFantasy(www.applevb.com)说的我试用过了,也不行。
    至于视图,我刚学习编程,好象还没有用过