关于sql,group by 请教各位???!!!

lyq 2001-09-29 04:40:48
有原料入库(ylrk)、原料出库(ylck)两个流水表,
现随时查询在(rq1,rq2)两时间段内所有原料(按编号
(ylbh)进行区分)的入库件数(rkjs)、出库件数(ckjs)、当前结存件数(jcjs),
显示在一表格内(要同时显示其他 关一些字段,如产地,供应商等),本想得到某种原料(多种)该时间段的入库、出库、及到该时间段的结存值,以编号分组显示,但显示结果是有许多编号相同的记录放在一起,不能最终达到汇总,请各位帮忙。

// query1.sql.add('select rq ,ylbh ,cd ,ph ,sum(yljs) ,sum(ckjs) ,0 jcjs from');
query1.sql.add('(select ylbh,rq,cd,ph,sum(yljs) yljs,0 ckjs,0 jcjs from ylrk where rq+3>=:rq1 and rq+2<=:rq2 group by ylbh,cd,rq,ph');
query1.sql.add('union all ');
query1.sql.add('select ylbh,rq,cd,ph,0 yljs,sum(ckjs) ckjs,0 jcjs from ylck where rq+3>=:rq3 and rq+2<=:rq4 group by ylbh,cd,rq,ph)');
query1.sql.add('union all ');
query1.sql.add('select ylrk.ylbh,ylrk.rq,ylrk.cd,ylrk.ph,0 yljs,0 ckjs,sum(yljs-ckjs) jcjs from ylrk,ylck where ylrk.rq<=:rq5 group by ylrk.ylbh,ylrk.cd,ylrk.rq,ylrk.ph');
query1.sql.add('as tmp group by ylbh,cd,rq,ph');
query1.Parameters.ParamByName('rq1').value:=rq1.date;
query1.Parameters.ParamByName('rq2').value:=rq2.date;
query1.Parameters.ParamByName('rq3').value:=rq1.date;
query1.Parameters.ParamByName('rq4').value:=rq2.date;
query1.Parameters.ParamByName('rq5').value:=rq2.date;
query1.Open;

...全文
210 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
cobi 2001-09-30
  • 打赏
  • 举报
回复
gz
lyq 2001-09-30
  • 打赏
  • 举报
回复
又上班了,无可奈何,请大家发表高见
Tense 2001-09-29
  • 打赏
  • 举报
回复
hehe
lyq 2001-09-29
  • 打赏
  • 举报
回复
还是不行,哎下班了。
tikkypeng 2001-09-29
  • 打赏
  • 举报
回复
query1.sql.add('select DisTinct ylbh,rq,cd,ph,0 yljs,sum(ckjs) ckjs,0 jcjs from ylck where rq+3>=:rq3 and rq+2<=:rq4 group by ylbh,cd,rq,ph)');//这里增加一个DisTinct
query1.sql.add('union all ');
query1.sql.add('select Distinct ylrk.ylbh,ylrk.rq,ylrk.cd,ylrk.ph,0 yljs,0 ckjs,sum(yljs-ckjs) jcjs from ylrk,ylck where ylrk.rq<=:rq5 group by ylrk.ylbh,ylrk.cd,ylrk.rq,ylrk.ph');//这里增加一个DisTinct
query1.sql.add('as tmp group by ylbh,cd,rq,ph');
query1.Parameters.ParamByName('rq1').value:=rq1.date;
query1.Parameters.ParamByName('rq2').value:=rq2.date;
query1.Parameters.ParamByName('rq3').value:=rq1.date;
query1.Parameters.ParamByName('rq4').value:=rq2.date;
query1.Parameters.ParamByName('rq5').value:=rq2.date;
query1.Open;
peter_xiong 2001-09-29
  • 打赏
  • 举报
回复
不要显示编号就行了

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧