以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  2表联合查询,带SUM功能  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=87875)

--  作者:mayazql
--  发布时间:2016/7/21 19:29:00
--  2表联合查询,带SUM功能
有2个表,表1是申请单,表2是订单,申请单中PR子表标识是唯一的,订单数据是从申请单中导入
申请单中一个PR子表标识的物料,可能是分2次采购。
现在想生成一个查询,将表2中的数量按照申请单子表标识分组汇总,和表1合成一个查询表。
不知道怎么写SQL语句。弄了好久没有弄出来。
希望实现的效果如图3


图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:3.png
图片点击可在新窗口打开查看



[此贴子已经被作者于2016/7/21 19:29:45编辑过]

--  作者:大红袍
--  发布时间:2016/7/21 19:58:00
--  

  直接连接查询,生成查询表,然后分组统计。

 

http://www.foxtable.com/webhelp/scr/2322.htm

 

http://www.foxtable.com/webhelp/scr/0158.htm

 


--  作者:mayazql
--  发布时间:2016/7/21 20:17:00
--  
谢谢大红袍,我的意思是生成一个查询表,知道申请的数量和订购的数量,增加订单时从采购申请单中选择,如果已经订购的物料就不要再重复采购了
--  作者:大红袍
--  发布时间:2016/7/21 20:38:00
--  

先得到这个表

 

 select a.标志, sum(a.数量) - sum(b.数量) as 剩余数量 fr om {申请表} as a left join {订单表} as b on (a.标志 = b.标志) group by a.标志

 

然后对这个表查询

 

 select * fr om {申请表} as c inner join (上表) as d on (c.标志 = d.标志) where 剩余数量 > 0

 

全部这样写

 

 select * fr om {申请表} as c inner join ( select a.标志, sum(a.数量) - sum(b.数量) as 剩余数量 fr om {申请表} as a left join {订单表} as b on (a.标志 = b.标志) group by a.标志) as d on (c.标志 = d.标志) where 剩余数量 > 0

 


--  作者:mayazql
--  发布时间:2016/7/21 20:43:00
--  
多谢热心的大红袍。我先试试。