Foxtable(狐表)用户栏目专家坐堂 → 需求数量与可供给数量匹配的问题(OK)


  共有4191人关注过本帖树形打印复制链接

主题:需求数量与可供给数量匹配的问题(OK)

帅哥哟,离线,有人找我吗?
scott518
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:292 积分:2488 威望:0 精华:0 注册:2011/11/4 17:32:00
需求数量与可供给数量匹配的问题(OK)  发帖心情 Post By:2014/4/24 14:03:00 [显示全部帖子]

物料需求表和采购在线两张表都按产品编码和日期排列好了(两表都有近万行数据),如何将采购在线中的累计交货数量高效的提取到物料需求表中;要满足以下条件:

1、  当采购在线中的交货日期=物料需求中的交货日期时,直接将累计交货写入到物料需求表相同的产品编码所在行的可供给量中;

2、如果采购在线表中没有与物料需求中相同的交货日期时,只能用小于需求日期的最近一个交货日期的累计交货数量写入到物料需求表中。如:2014-04-12没有交货,则用2014-04-11或之前的相同产品编码的累计交货数量填充。

 

提取按钮中的代码要如何写才最高效?谢谢!

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:需求数量匹配.table

[此贴子已经被作者于2014-4-25 16:07:38编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
scott518
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:292 积分:2488 威望:0 精华:0 注册:2011/11/4 17:32:00
  发帖心情 Post By:2014/4/24 15:33:00 [显示全部帖子]

谢谢两位老师,我再想想看,原来是想将两张表查询到一起排好序后再加载到前台来,(因为两张表其实都是不用输入的,是从sql数据库中的多张表表查询得到的)

 回到顶部
帅哥哟,离线,有人找我吗?
scott518
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:292 积分:2488 威望:0 精华:0 注册:2011/11/4 17:32:00
  发帖心情 Post By:2014/4/25 10:56:00 [显示全部帖子]

弄了很久,sql的查询还是不会写,求助:

 

select 产品编码,需求日期,sum(需求数量) as 需求数量 from 物料需求表 group by 产品编码,需求日期

select 产品编码,交货日期,sum(交货数量) as 预计交货 from 采购在线表 group by 产品编码,交货日期

 

要将上在的两个表按产品编码联合查询为一个表(产品编码,需求日期,需求数量,预计交货 四个字段)如果交货日期不等于需求日期时取小于需求日期的最近的一个交货日期的预计交货数量即可。下面的写法好像不正确:

 

select 产品编码,需求日期,sum(需求数量) as 需求数量,(select top 1 预计交货 from b) from 物料需求表 a group by 产品编码,需求日期 left join (select 产品编码,交货日期,sum(交货数量) as 预计交货 from 采购在线表 group by 产品编码,交货日期 order by 交货日期 DESC) b where b.产品编码 = a.产品编码 and b.交货日期 <= a.需求日期


 回到顶部
帅哥哟,离线,有人找我吗?
scott518
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:292 积分:2488 威望:0 精华:0 注册:2011/11/4 17:32:00
  发帖心情 Post By:2014/4/25 15:23:00 [显示全部帖子]

谢谢,用视图确实清楚了很多,但还有个问题请教,如果想查询同一个表中的需求数量按需求日期逐行生成累计数量,

SELECT a.物料编码,a.需求日期,sum(a.需求数量) as 需求数量, sum(b.累计需求) as 累计需求 FROM MPS物料明细 a left JOIN
 (SELECT 物料编码,需求日期,sum(需求数量) as 累计需求
  FROM MPS物料明细 group by 物料编码,需求日期) b
ON a.物料编码 = b.物料编码 and b.需求日期 <= a.需求日期
GROUP BY a.物料编码,a.需求日期
ORDER BY a.物料编码,a.需求日期

 
图片点击可在新窗口打开查看此主题相关图片如下:360截图20140425151800272.jpg
图片点击可在新窗口打开查看

 

为什么结果不正确呢?主查询是按物料编码,需求日期分组统计需求数量,而子查询想在此基础上逐行累计,谢谢!


 回到顶部
帅哥哟,离线,有人找我吗?
scott518
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:292 积分:2488 威望:0 精华:0 注册:2011/11/4 17:32:00
  发帖心情 Post By:2014/4/25 15:48:00 [显示全部帖子]

可以了。

SELECT a.物料编码,a.需求日期,a.需求数量, sum(b.需求数量) as 累计需求
FROM MPS物料明细 b inner JOIN
 (SELECT 物料编码,需求日期,sum(需求数量) as 需求数量
  FROM MPS物料明细 group by 物料编码,需求日期) a
ON a.物料编码 = b.物料编码 and b.需求日期 <= a.需求日期
GROUP BY a.物料编码,a.需求日期,a.需求数量
ORDER BY a.物料编码,a.需求日期


 回到顶部
帅哥哟,离线,有人找我吗?
scott518
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:292 积分:2488 威望:0 精华:0 注册:2011/11/4 17:32:00
  发帖心情 Post By:2014/4/25 16:07:00 [显示全部帖子]

谢谢,就是这个意思!

 回到顶部