在线100分求SQL语句,一个项目马上要好了

zhujiangxiong 2003-12-12 05:33:43
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的说说该怎么加?
...全文
46 10 打赏 收藏 举报
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
zhujiangxiong 2003-12-12
我还是没有解决,TechnoFantasy(www.applevb.com)说的我试用过了,也不行。
至于视图,我刚学习编程,好象还没有用过
  • 打赏
  • 举报
回复
gencan 2003-12-12
up
  • 打赏
  • 举报
回复
Flarezhao 2003-12-12
沒錯呵
  • 打赏
  • 举报
回复
zhujiangxiong 2003-12-12
up
  • 打赏
  • 举报
回复
dongliu 2003-12-12
把你的第一条语句写成一个视图:
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
  • 打赏
  • 举报
回复
TechnoFantasy 2003-12-12
max(t1.ht_je-sum(t2.skdmx_skje))换成

max(t1.ht_je)-sum(t2.skdmx_skje)
  • 打赏
  • 举报
回复
liuxiaoyuzhou 2003-12-12
你写的没错呀!
  • 打赏
  • 举报
回复
yurenjf 2003-12-12
为什么我这里可以呢?
  • 打赏
  • 举报
回复
zengwj 2003-12-12
  • 打赏
  • 举报
回复
madyak 2003-12-12
可以考虑用UNION 将两个集合并起来,但字段最好是一样多
  • 打赏
  • 举报
回复
相关推荐
发帖
Delphi
加入

5074

社区成员

Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
申请成为版主
帖子事件
创建了帖子
2003-12-12 05:33
社区公告
暂无公告