求助,sql如何分类汇总求结果

各位,我需要根据pbvid汇总每条pbvid对应的isum值,然后需要分别用iamount(同一个值)减去汇总的这个值,具体的语句应该如何描述,这个语句具体怎么改?

select ta.iamount+isum-ta.iapplyamt as fsum,* from (select app.dVouchDate,apps.iApplyAmt,ap.cexch_name,app.cSSCode,app.cVouchID,app.cvouchtype,app.cDigest,app.dCloseDate,app.PID,ap.iamount,v.cVenName,v.cVenCode,ss.cSSNamefrom Ap_Vouch ap,AP_ApplyPayVouch app,AP_ApplyPayVouchs apps,Vendor v,SettleStyle sswhere ap.cFlag=app.cFlag and ap.bStartFlag=1 and app.PID=apps.PID and app.cSSCode=ss.cSSCode and  ap.cDwCode=v.cvencode) tafull join(select pb.cAuditDate,pbs.iSum,pb.cPBVMemo,pbs.cPZNum,pb.cVenCode,pb.cPBVVerifier,cPBVMaker,pb.dGatheringDate,pb.cOrderCode,pb.cPBVCode,pb.cPBVBillType,pb.cBusType,pbs.PBVIDfrom PurBillVouch pb,PurBillVouchs pbs,Vendor vwhere pbs.PBVID=pb.PBVID  and pb.cVenCode=v.cvencode) tbon ta.cVenCode=tb.cVenCodewhere dVouchDate is not null

zhangjinrui 发布于 2021-10-20 09:36
1min目标场景问卷 立即参与
回答问题
悬赏:9 F币 4人赏过 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共5回答
最佳回答
0
zhangjinruiLv2见习互助
发布于2021-10-26 09:34

最佳回答
0
Z4u3z1Lv6专家互助
发布于2021-10-20 09:46

仅从你的截图上看

SELECT A.*,A.IAMOUNT-B.ISUM FROM 表 A INNER JOIN (

SELECT pbvid,SUM(ISUM) [ISUM] FROM 表 group by pbvid

) B ON A.pbvid=B.pbvid

PS:你的SQL 太长 有点晕

  • zhangjinrui zhangjinrui(提问者) [ISUM] 这个是什么意思
    2021-10-20 09:51 
  • Z4u3z1 Z4u3z1 回复 zhangjinrui(提问者) SQL SERVER 中等效于as isum。其它数据库不支持的话你就改成 as isum
    2021-10-20 09:54 
  • zhangjinrui zhangjinrui(提问者) 回复 Z4u3z1 这个不对
    2021-10-20 11:37 
最佳回答
0
AUUUUUUULv5见习互助
发布于2021-10-20 11:56(编辑于 2021-10-20 11:58)

第一层 

select "需要显示的字段",sum(b.iamount - isum) as  isum(

--第二层 

select “需要显示的字段”, sum(isum) isum

group by “需要显示的字段”

)a

--第三层

left join(

select iamount 

) b on b.关联条件 = a.关联条件

group by "需要显示的字段"(不包含sum(b.iamount - isum))

最佳回答
0
MaogflyLv4见习互助
发布于2021-10-20 13:36
采购发票啊
最佳回答
0
18594047102Lv6见习互助
发布于2021-10-20 14:29

select pbvid,sum(isum)-sum(iamount)  from 表名  group by pbvid。

利用分组求和

  • zhangjinrui zhangjinrui(提问者) 我需要的是结果单独成一列,而且之前选的数据不能丢
    2021-10-20 16:13 
  • 18594047102 18594047102 回复 zhangjinrui(提问者) select pbvid,sum(isum)-sum(iamount) from 表名 group by pbvid left join (你之前的结果集)b on a.pbvid=b.pbvid
    2021-10-21 10:55 
  • 2关注人数
  • 731浏览人数
  • 最后回答于:2021-10-26 09:34
    请选择关闭问题的原因
    确定 取消
    返回顶部