TA --ShelfNO是唯一的
id ShelfNO AItem Aqty Adate Atype TotalQty
1 s11 i951 200 2007-8-23 1 200
2 s12 i951 200 2007-8-24 0 200
3 s13 i951 200 2007-8-21 1 200
4 s15 i951 400 2007-8-28 0 400
5 s14 i951 320 2007-8-28 1 320
6 s91 i999 300 2007-8-20 0 300
7 s92 i999 600 2007-7-21 1 600
8 s93 i999 490 2007-7-22 1 490
9 s96 i999 1180 2007-7-19 1 1180
10 s97 i999 900 2007-7-18 1 900
11 s71 i977 200 2007-7-18 0 200
12 s72 i977 300 2007-7-19 1 300TB
id OutItem OutQty Bdate ShelfNO Quqty Adate Atype unit
1 i951 300 2007-8-25 0
2 i951 900 2007-8-2 b19 900 2007-06-09 0 0
3 i951 700 2007-8-26 100
4 i999 800 2007-8-19 0
5 i999 1800 2007-8-19 300
6 i977 900 2007-8-17 0---
概述:
TA 是库存产品表 item是产品编号,ShelfNO是货架编号,Aqty是现库存数量, TotalQty 原库存总数量,
TB 是要发货的货单表。#######>>>>现在新增加了一列 unit(单位数量) <<<<<######
现在要实现的是 为TB里ShelfNO为空的记录到TA里找出对应的货架(ShelfNO)及在货架上取的数量(Qutqty)----供操作员搬运货物
#####>>>>>现在新增加了以下两个要求。
(a),如果unti<>0的时候(当unti<>0的时候OutQty/unit 一定整除),TB到TA中 要以 unit的整数倍去取货,
如果某货架上所剩的数量(Aqty)小于unit时(即小于一单位)则跳过不取了,到下一货架上取).----例如TA中的第5行,因为是TB中的第3行去取,而这行的unit=100,所以在TA中的第5行上只取300。
(b) 这里的首要条件是OutQty - Aqty)>0 的情况才考虑以下三种情况,------注意这里的OutQty和Aqty都是动态变化的。
if 1000 =< TotalQty and (OutQty - Aqty)/ TotalQty <0.03 then suggestAddQty= (OutQty - Aqty);--suggestAddQty是#Result中新增的一列
if 500=<TotalQty <1000 and (OutQty - Aqty)/ TotalQty <0.02 then suggestAddQty= (OutQty - Aqty);
if 500>=TotalQty and (OutQty - Aqty)/ TotalQty <0.01 then suggestAddQty= (OutQty - Aqty);
如果属于上面三种情况中的一种,则不再找下一个货架了,在 Quqty中就直接填写OutQty,在suggestAddQty中填充建议补充的数据即suggestAddQty=OutQty - Aqty)
<<<<<<######找货架的原则如下:
(1) -14 = < TA.ADate - TB.BDate = <0 如果有多批记录满足,优先考虑Atype=1的记录,再取TA.ADate离TB.BDate近的记录 ------(情况(1)是最近2周内到架的)
(2) 0 <TA.ADate-TB.BDate <5 如果有多批记录满足,优先考虑Atype=1的记录,再取TA.ADate离TB.BDate近的记录 ------(情况(2)是比出货日期晚5天到架的)
(3) TA.ADate - TB.BDate < -14 如果有多批记录满足,优先考虑Atype=1的记录,再取TA.ADate离TB.BDate近的记录 -----(情况(3)是早于2周到架的)
以上条件依次优先考虑(即首先找满足条件(1)的记录,如果数量不够则找(2),如果还不够则找(3))。 ----
按照以上原则 TA表中被取货的记录,对应的Aqty要减去被取的数量;
同时要生成一个临时表#tResult --
生成的临时表中要包括TB中的所有记录,TB中原来TB.ShelfNO < > " "的就记录直接复制到#tResult中, TB.ShelfNO= " "的记录 就将查询出得到的货架信息及数量补上再insert到#tResult中,
当TB.ShelfNO= " " 的要到多个货架上取货的时候,就生成多条记录。 TA表的库存不够就按以下方法处理:
在#Result再加上一列, BuGouQty 来记录最后库存不够的数量,-----如果数量不够时,要生成一条新的记录,
这条新的记录 shelfNo ,Adate 和Atype都为空, BuGouQty就记录不够的数量。
---
请问如何得到这个#tResult表。
上面的测试数据最后得到的#tResult表应该如下:
#Result
id TBid OutItem OutQty unit Bdate ShelfNO Quqty BuGouQty Adate Atype suggestAddQty
1 1 i951 300 0 2007-8-25 s11 200 2007-8-23 1
2 1 i951 300 0 2007-8-25 s13 100 2007-8-21 1
3 2 i951 900 0 2007-8-2 b19 900 2007-06-09 0
4 3 i951 700 100 2007-8-26 s13 100 2007-8-21 1
5 3 i951 700 100 2007-8-26 s12 200 2007-8-24 0
6 3 i951 700 100 2007-8-26 s14 300 2007-8-28 1
7 3 i951 700 100 2007-8-26 s15 100 2007-8-28 0
8 4 i999 800 0 2007-8-19 s91 300 2007-8-20 0
9 4 i999 800 0 2007-8-19 s93 500 2007-7-22 1 10
10 5 i999 1800 300 2007-8-19 s92 600 2007-7-21 1
11 5 i999 1800 300 2007-8-19 s96 1200 2007-7-19 1 20
12 6 i977 900 0 2007-8-17 s72 300 2007-7-19 1
13 6 i977 900 0 2007-8-17 s71 200 2007-7-18 0
14 6 i977 900 0 2007-8-17 400
---记录 11 就是新生成的 库存不够的记录。(至于#Result中1--10行中的BuGouQty填充0也可以,为空也可以)
id ShelfNO AItem Aqty Adate Atype TotalQty
1 s11 i951 200 2007-8-23 1 200
2 s12 i951 200 2007-8-24 0 200
3 s13 i951 200 2007-8-21 1 200
4 s15 i951 400 2007-8-28 0 400
5 s14 i951 320 2007-8-28 1 320
6 s91 i999 300 2007-8-20 0 300
7 s92 i999 600 2007-7-21 1 600
8 s93 i999 490 2007-7-22 1 490
9 s96 i999 1180 2007-7-19 1 1180
10 s97 i999 900 2007-7-18 1 900
11 s71 i977 200 2007-7-18 0 200
12 s72 i977 300 2007-7-19 1 300TB
id OutItem OutQty Bdate ShelfNO Quqty Adate Atype unit
1 i951 300 2007-8-25 0
2 i951 900 2007-8-2 b19 900 2007-06-09 0 0
3 i951 700 2007-8-26 100
4 i999 800 2007-8-19 0
5 i999 1800 2007-8-19 300
6 i977 900 2007-8-17 0---
概述:
TA 是库存产品表 item是产品编号,ShelfNO是货架编号,Aqty是现库存数量, TotalQty 原库存总数量,
TB 是要发货的货单表。#######>>>>现在新增加了一列 unit(单位数量) <<<<<######
现在要实现的是 为TB里ShelfNO为空的记录到TA里找出对应的货架(ShelfNO)及在货架上取的数量(Qutqty)----供操作员搬运货物
#####>>>>>现在新增加了以下两个要求。
(a),如果unti<>0的时候(当unti<>0的时候OutQty/unit 一定整除),TB到TA中 要以 unit的整数倍去取货,
如果某货架上所剩的数量(Aqty)小于unit时(即小于一单位)则跳过不取了,到下一货架上取).----例如TA中的第5行,因为是TB中的第3行去取,而这行的unit=100,所以在TA中的第5行上只取300。
(b) 这里的首要条件是OutQty - Aqty)>0 的情况才考虑以下三种情况,------注意这里的OutQty和Aqty都是动态变化的。
if 1000 =< TotalQty and (OutQty - Aqty)/ TotalQty <0.03 then suggestAddQty= (OutQty - Aqty);--suggestAddQty是#Result中新增的一列
if 500=<TotalQty <1000 and (OutQty - Aqty)/ TotalQty <0.02 then suggestAddQty= (OutQty - Aqty);
if 500>=TotalQty and (OutQty - Aqty)/ TotalQty <0.01 then suggestAddQty= (OutQty - Aqty);
如果属于上面三种情况中的一种,则不再找下一个货架了,在 Quqty中就直接填写OutQty,在suggestAddQty中填充建议补充的数据即suggestAddQty=OutQty - Aqty)
<<<<<<######找货架的原则如下:
(1) -14 = < TA.ADate - TB.BDate = <0 如果有多批记录满足,优先考虑Atype=1的记录,再取TA.ADate离TB.BDate近的记录 ------(情况(1)是最近2周内到架的)
(2) 0 <TA.ADate-TB.BDate <5 如果有多批记录满足,优先考虑Atype=1的记录,再取TA.ADate离TB.BDate近的记录 ------(情况(2)是比出货日期晚5天到架的)
(3) TA.ADate - TB.BDate < -14 如果有多批记录满足,优先考虑Atype=1的记录,再取TA.ADate离TB.BDate近的记录 -----(情况(3)是早于2周到架的)
以上条件依次优先考虑(即首先找满足条件(1)的记录,如果数量不够则找(2),如果还不够则找(3))。 ----
按照以上原则 TA表中被取货的记录,对应的Aqty要减去被取的数量;
同时要生成一个临时表#tResult --
生成的临时表中要包括TB中的所有记录,TB中原来TB.ShelfNO < > " "的就记录直接复制到#tResult中, TB.ShelfNO= " "的记录 就将查询出得到的货架信息及数量补上再insert到#tResult中,
当TB.ShelfNO= " " 的要到多个货架上取货的时候,就生成多条记录。 TA表的库存不够就按以下方法处理:
在#Result再加上一列, BuGouQty 来记录最后库存不够的数量,-----如果数量不够时,要生成一条新的记录,
这条新的记录 shelfNo ,Adate 和Atype都为空, BuGouQty就记录不够的数量。
---
请问如何得到这个#tResult表。
上面的测试数据最后得到的#tResult表应该如下:
#Result
id TBid OutItem OutQty unit Bdate ShelfNO Quqty BuGouQty Adate Atype suggestAddQty
1 1 i951 300 0 2007-8-25 s11 200 2007-8-23 1
2 1 i951 300 0 2007-8-25 s13 100 2007-8-21 1
3 2 i951 900 0 2007-8-2 b19 900 2007-06-09 0
4 3 i951 700 100 2007-8-26 s13 100 2007-8-21 1
5 3 i951 700 100 2007-8-26 s12 200 2007-8-24 0
6 3 i951 700 100 2007-8-26 s14 300 2007-8-28 1
7 3 i951 700 100 2007-8-26 s15 100 2007-8-28 0
8 4 i999 800 0 2007-8-19 s91 300 2007-8-20 0
9 4 i999 800 0 2007-8-19 s93 500 2007-7-22 1 10
10 5 i999 1800 300 2007-8-19 s92 600 2007-7-21 1
11 5 i999 1800 300 2007-8-19 s96 1200 2007-7-19 1 20
12 6 i977 900 0 2007-8-17 s72 300 2007-7-19 1
13 6 i977 900 0 2007-8-17 s71 200 2007-7-18 0
14 6 i977 900 0 2007-8-17 400
---记录 11 就是新生成的 库存不够的记录。(至于#Result中1--10行中的BuGouQty填充0也可以,为空也可以)
id ShelfNO AItem Aqty Adate Atype TotalQty
1 s11 i951 200 2007-8-23 1 200
2 s12 i951 200 2007-8-24 0 200
3 s13 i951 200 2007-8-21 1 200
4 s15 i951 400 2007-8-28 0 400
5 s14 i951 320 2007-8-28 1 320
6 s91 i999 300 2007-8-20 0 300
7 s92 i999 600 2007-7-21 1 600
8 s93 i999 490 2007-7-22 1 490
9 s96 i999 1180 2007-7-19 1 1180
10 s97 i999 900 2007-7-18 1 900
11 s71 i977 200 2007-7-18 0 200
12 s72 i977 300 2007-7-19 1 300
TB
id OutItem OutQty Bdate ShelfNO Quqty Adate Atype unit
1 i951 300 2007-8-25 0
2 i951 900 2007-8-2 b19 900 2007-06-09 0 0
3 i951 700 2007-8-26 100
4 i999 800 2007-8-19 0
5 i999 1800 2007-8-19 300
6 i977 900 2007-8-17 0 ---
概述:
TA 是库存产品表 item是产品编号,ShelfNO是货架编号,Aqty是现库存数量, TotalQty 原库存总数量,
TB 是要发货的货单表。####### > > > >现在新增加了一列 unit(单位数量) < < < < <######
现在要实现的是 为TB里ShelfNO为空的记录到TA里找出对应的货架(ShelfNO)及在货架上取的数量(Qutqty)----供操作员搬运货物
##### > > > > >现在新增加了以下两个要求。
(a),如果unti < >0的时候(当unti < >0的时候OutQty/unit 一定整除),TB到TA中 要以 unit的整数倍去取货,
如果某货架上所剩的数量(Aqty)小于unit时(即小于一单位)则跳过不取了,到下一货架上取).----例如TA中的第5行,因为是TB中的第3行去取,而这行的unit=100,所以在TA中的第5行上只取300。
(b) 这里的首要条件是OutQty - Aqty) >0 的情况才考虑以下三种情况,------注意这里的OutQty和Aqty都是动态变化的。
if 1000 = < TotalQty and (OutQty - Aqty)/ TotalQty <0.03 then suggestAddQty= (OutQty - Aqty);--suggestAddQty是#Result中新增的一列
if 500= <TotalQty <1000 and (OutQty - Aqty)/ TotalQty <0.02 then suggestAddQty= (OutQty - Aqty);
if 500 >=TotalQty and (OutQty - Aqty)/ TotalQty <0.01 then suggestAddQty= (OutQty - Aqty);
如果属于上面三种情况中的一种,则不再找下一个货架了,在 Quqty中就直接填写OutQty,在suggestAddQty中填充建议补充的数据即suggestAddQty=OutQty - Aqty)
< < < < < <###### 找货架的原则如下:
(1) -14 = < TA.ADate - TB.BDate = <0 如果有多批记录满足,优先考虑Atype=1的记录,再取TA.ADate离TB.BDate近的记录 ------(情况(1)是最近2周内到架的)
(2) 0 <TA.ADate-TB.BDate <5 如果有多批记录满足,优先考虑Atype=1的记录,再取TA.ADate离TB.BDate近的记录 ------(情况(2)是比出货日期晚5天到架的)
(3) TA.ADate - TB.BDate < -14 如果有多批记录满足,优先考虑Atype=1的记录,再取TA.ADate离TB.BDate近的记录 -----(情况(3)是早于2周到架的)
以上条件依次优先考虑(即首先找满足条件(1)的记录,如果数量不够则找(2),如果还不够则找(3))。 ----
按照以上原则 TA表中被取货的记录,对应的Aqty要减去被取的数量;
同时要生成一个临时表#tResult --
生成的临时表中要包括TB中的所有记录,TB中原来TB.ShelfNO < > " "的就记录直接复制到#tResult中, TB.ShelfNO= " "的记录 就将查询出得到的货架信息及数量补上再insert到#tResult中,
当TB.ShelfNO= " " 的要到多个货架上取货的时候,就生成多条记录。 TA表的库存不够就按以下方法处理:
在#Result再加上一列, BuGouQty 来记录最后库存不够的数量,-----如果数量不够时,要生成一条新的记录,
这条新的记录 shelfNo ,Adate 和Atype都为空, BuGouQty就记录不够的数量。
---
请问如何得到这个#tResult表。
上面的测试数据最后得到的#tResult表应该如下:
#Result
id TBid OutItem OutQty unit Bdate ShelfNO Quqty BuGouQty Adate Atype suggestAddQty
1 1 i951 300 0 2007-8-25 s11 200 2007-8-23 1
2 1 i951 300 0 2007-8-25 s13 100 2007-8-21 1
3 2 i951 900 0 2007-8-2 b19 900 2007-06-09 0
4 3 i951 700 100 2007-8-26 s13 100 2007-8-21 1
5 3 i951 700 100 2007-8-26 s12 200 2007-8-24 0
6 3 i951 700 100 2007-8-26 s14 300 2007-8-28 1
7 3 i951 700 100 2007-8-26 s15 100 2007-8-28 0
8 4 i999 800 0 2007-8-19 s91 300 2007-8-20 0
9 4 i999 800 0 2007-8-19 s93 500 2007-7-22 1 10
10 5 i999 1800 300 2007-8-19 s92 600 2007-7-21 1
11 5 i999 1800 300 2007-8-19 s96 1200 2007-7-19 1 20
12 6 i977 900 0 2007-8-17 s72 300 2007-7-19 1
13 6 i977 900 0 2007-8-17 s71 200 2007-7-18 0
14 6 i977 900 0 2007-8-17 400
---记录 11 就是新生成的 库存不够的记录。(至于#Result中1--10行中的BuGouQty填充0也可以,为空也可以)
id ShelfNO AItem Aqty Adate Atype TotalQty
1 s11 i951 200 2007-8-23 1 200
2 s12 i951 200 2007-8-24 0 200
3 s13 i951 200 2007-8-21 1 200
4 s15 i951 400 2007-8-28 0 400
5 s14 i951 320 2007-8-28 1 320
6 s91 i999 300 2007-8-20 0 300
7 s92 i999 600 2007-7-21 1 600
8 s93 i999 490 2007-7-22 1 490
9 s96 i999 1180 2007-7-19 1 1180
10 s97 i999 900 2007-7-18 1 900
11 s71 i977 200 2007-7-18 0 200
12 s72 i977 300 2007-7-19 1 300
TB
id OutItem OutQty Bdate ShelfNO Quqty Adate Atype unit
1 i951 300 2007-8-25 0
2 i951 900 2007-8-2 b19 900 2007-06-09 0 0
3 i951 700 2007-8-26 100
4 i999 800 2007-8-19 0
5 i999 1800 2007-8-19 300
6 i977 900 2007-8-17 0 ---
概述:
TA 是库存产品表 item是产品编号,ShelfNO是货架编号,Aqty是现库存数量, TotalQty 原库存总数量,
TB 是要发货的货单表。####### > > > >现在新增加了一列 unit(单位数量) < < < < <######
现在要实现的是 为TB里ShelfNO为空的记录到TA里找出对应的货架(ShelfNO)及在货架上取的数量(Qutqty)----供操作员搬运货物
##### > > > > >现在新增加了以下两个要求。
(a),如果unti < >0的时候(当unti < >0的时候OutQty/unit 一定整除),TB到TA中 要以 unit的整数倍去取货,
如果某货架上所剩的数量(Aqty)小于unit时(即小于一单位)则跳过不取了,到下一货架上取).----例如TA中的第5行,因为是TB中的第3行去取,而这行的unit=100,所以在TA中的第5行上只取300。
(b) 这里的首要条件是OutQty - Aqty) >0 的情况才考虑以下三种情况,------注意这里的OutQty和Aqty都是动态变化的。
if 1000 = < TotalQty and (OutQty - Aqty)/ TotalQty <0.03 then suggestAddQty= (OutQty - Aqty);--suggestAddQty是#Result中新增的一列
if 500= <TotalQty <1000 and (OutQty - Aqty)/ TotalQty <0.02 then suggestAddQty= (OutQty - Aqty);
if 500 >=TotalQty and (OutQty - Aqty)/ TotalQty <0.01 then suggestAddQty= (OutQty - Aqty);
如果属于上面三种情况中的一种,则不再找下一个货架了,在 Quqty中就直接填写OutQty,在suggestAddQty中填充建议补充的数据即suggestAddQty=OutQty - Aqty)
< < < < < <###### 找货架的原则如下:
(1) -14 = < TA.ADate - TB.BDate = <0 如果有多批记录满足,优先考虑Atype=1的记录,再取TA.ADate离TB.BDate近的记录 ------(情况(1)是最近2周内到架的)
(2) 0 <TA.ADate-TB.BDate <5 如果有多批记录满足,优先考虑Atype=1的记录,再取TA.ADate离TB.BDate近的记录 ------(情况(2)是比出货日期晚5天到架的)
(3) TA.ADate - TB.BDate < -14 如果有多批记录满足,优先考虑Atype=1的记录,再取TA.ADate离TB.BDate近的记录 -----(情况(3)是早于2周到架的)
以上条件依次优先考虑(即首先找满足条件(1)的记录,如果数量不够则找(2),如果还不够则找(3))。 ----
按照以上原则 TA表中被取货的记录,对应的Aqty要减去被取的数量;
同时要生成一个临时表#tResult --
生成的临时表中要包括TB中的所有记录,TB中原来TB.ShelfNO < > " "的就记录直接复制到#tResult中, TB.ShelfNO= " "的记录 就将查询出得到的货架信息及数量补上再insert到#tResult中,
当TB.ShelfNO= " " 的要到多个货架上取货的时候,就生成多条记录。 TA表的库存不够就按以下方法处理:
在#Result再加上一列, BuGouQty 来记录最后库存不够的数量,-----如果数量不够时,要生成一条新的记录,
这条新的记录 shelfNo ,Adate 和Atype都为空, BuGouQty就记录不够的数量。
---
请问如何得到这个#tResult表。
上面的测试数据最后得到的#tResult表应该如下:
#Result
id TBid OutItem OutQty unit Bdate ShelfNO Quqty BuGouQty Adate Atype suggestAddQty
1 1 i951 300 0 2007-8-25 s11 200 2007-8-23 1
2 1 i951 300 0 2007-8-25 s13 100 2007-8-21 1
3 2 i951 900 0 2007-8-2 b19 900 2007-06-09 0
4 3 i951 700 100 2007-8-26 s13 100 2007-8-21 1
5 3 i951 700 100 2007-8-26 s12 200 2007-8-24 0
6 3 i951 700 100 2007-8-26 s14 300 2007-8-28 1
7 3 i951 700 100 2007-8-26 s15 100 2007-8-28 0
8 4 i999 800 0 2007-8-19 s91 300 2007-8-20 0
9 4 i999 800 0 2007-8-19 s93 500 2007-7-22 1 10
10 5 i999 1800 300 2007-8-19 s92 600 2007-7-21 1
11 5 i999 1800 300 2007-8-19 s96 1200 2007-7-19 1 20
12 6 i977 900 0 2007-8-17 s72 300 2007-7-19 1
13 6 i977 900 0 2007-8-17 s71 200 2007-7-18 0
14 6 i977 900 0 2007-8-17 400
---记录 11 就是新生成的 库存不够的记录。(至于#Result中1--10行中的BuGouQty填充0也可以,为空也可以)
id ShelfNO AItem Aqty Adate Atype TotalQty
1 s11 i951 200 2007-8-23 1 200
2 s12 i951 200 2007-8-24 0 200
3 s13 i951 200 2007-8-21 1 200
4 s15 i951 400 2007-8-28 0 400
5 s14 i951 320 2007-8-28 1 320
6 s91 i999 300 2007-8-20 0 300
7 s92 i999 600 2007-7-21 1 600
8 s93 i999 490 2007-7-22 1 490
9 s96 i999 1180 2007-7-19 1 1180
10 s97 i999 900 2007-7-18 1 900
11 s71 i977 200 2007-7-18 0 200
12 s72 i977 300 2007-7-19 1 300
TB
id OutItem OutQty Bdate ShelfNO Quqty Adate Atype unit
1 i951 300 2007-8-25 0
2 i951 900 2007-8-2 b19 900 2007-06-09 0 0
3 i951 700 2007-8-26 100
4 i999 800 2007-8-19 0
5 i999 1800 2007-8-19 300
6 i977 900 2007-8-17 0 ---
概述:
TA 是库存产品表 item是产品编号,ShelfNO是货架编号,Aqty是现库存数量, TotalQty 原库存总数量,
TB 是要发货的货单表。####### > > > >现在新增加了一列 unit(单位数量) < < < < <######
现在要实现的是 为TB里ShelfNO为空的记录到TA里找出对应的货架(ShelfNO)及在货架上取的数量(Qutqty)----供操作员搬运货物
##### > > > > >现在新增加了以下两个要求。
(a),如果unti < >0的时候(当unti < >0的时候OutQty/unit 一定整除),TB到TA中 要以 unit的整数倍去取货,
如果某货架上所剩的数量(Aqty)小于unit时(即小于一单位)则跳过不取了,到下一货架上取).----例如TA中的第5行,因为是TB中的第3行去取,而这行的unit=100,所以在TA中的第5行上只取300。
(b) 这里的首要条件是OutQty - Aqty) >0 的情况才考虑以下三种情况,------注意这里的OutQty和Aqty都是动态变化的。
if 1000 = < TotalQty and (OutQty - Aqty)/ TotalQty <0.03 then suggestAddQty= (OutQty - Aqty);--suggestAddQty是#Result中新增的一列
if 500= <TotalQty <1000 and (OutQty - Aqty)/ TotalQty <0.02 then suggestAddQty= (OutQty - Aqty);
if 500 >=TotalQty and (OutQty - Aqty)/ TotalQty <0.01 then suggestAddQty= (OutQty - Aqty);
如果属于上面三种情况中的一种,则不再找下一个货架了,在 Quqty中就直接填写OutQty,在suggestAddQty中填充建议补充的数据即suggestAddQty=OutQty - Aqty)
< < < < < <###### 找货架的原则如下:
(1) -14 = < TA.ADate - TB.BDate = <0 如果有多批记录满足,优先考虑Atype=1的记录,再取TA.ADate离TB.BDate近的记录 ------(情况(1)是最近2周内到架的)
(2) 0 <TA.ADate-TB.BDate <5 如果有多批记录满足,优先考虑Atype=1的记录,再取TA.ADate离TB.BDate近的记录 ------(情况(2)是比出货日期晚5天到架的)
(3) TA.ADate - TB.BDate < -14 如果有多批记录满足,优先考虑Atype=1的记录,再取TA.ADate离TB.BDate近的记录 -----(情况(3)是早于2周到架的)
以上条件依次优先考虑(即首先找满足条件(1)的记录,如果数量不够则找(2),如果还不够则找(3))。 ----
按照以上原则 TA表中被取货的记录,对应的Aqty要减去被取的数量;
同时要生成一个临时表#tResult --
生成的临时表中要包括TB中的所有记录,TB中原来TB.ShelfNO < > " "的就记录直接复制到#tResult中, TB.ShelfNO= " "的记录 就将查询出得到的货架信息及数量补上再insert到#tResult中,
当TB.ShelfNO= " " 的要到多个货架上取货的时候,就生成多条记录。 TA表的库存不够就按以下方法处理:
在#Result再加上一列, BuGouQty 来记录最后库存不够的数量,-----如果数量不够时,要生成一条新的记录,
这条新的记录 shelfNo ,Adate 和Atype都为空, BuGouQty就记录不够的数量。
---
请问如何得到这个#tResult表。
上面的测试数据最后得到的#tResult表应该如下:
#Result
id TBid OutItem OutQty unit Bdate ShelfNO Quqty BuGouQty Adate Atype suggestAddQty
1 1 i951 300 0 2007-8-25 s11 200 2007-8-23 1
2 1 i951 300 0 2007-8-25 s13 100 2007-8-21 1
3 2 i951 900 0 2007-8-2 b19 900 2007-06-09 0
4 3 i951 700 100 2007-8-26 s13 100 2007-8-21 1
5 3 i951 700 100 2007-8-26 s12 200 2007-8-24 0
6 3 i951 700 100 2007-8-26 s14 300 2007-8-28 1
7 3 i951 700 100 2007-8-26 s15 100 2007-8-28 0
8 4 i999 800 0 2007-8-19 s91 300 2007-8-20 0
9 4 i999 800 0 2007-8-19 s93 500 2007-7-22 1 10
10 5 i999 1800 300 2007-8-19 s92 600 2007-7-21 1
11 5 i999 1800 300 2007-8-19 s96 1200 2007-7-19 1 20
12 6 i977 900 0 2007-8-17 s72 300 2007-7-19 1
13 6 i977 900 0 2007-8-17 s71 200 2007-7-18 0
14 6 i977 900 0 2007-8-17 400
---记录 11 就是新生成的 库存不够的记录。(至于#Result中1--10行中的BuGouQty填充0也可以,为空也可以)