首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

MS-SQL 挑战一下吧!怎样处理这类有关问题,感觉无从下手啊求解

2013-03-26 
MS-SQL 挑战一下吧!怎样处理这类问题,感觉无从下手啊!求解本帖最后由 comcyd 于 2012-11-12 18:06:09 编辑

MS-SQL 挑战一下吧!怎样处理这类问题,感觉无从下手啊!求解
本帖最后由 comcyd 于 2012-11-12 18:06:09 编辑 直入主题请看下文:
描述有点过于详细,表文并茂,请耐心看完(感觉像写很烂的小说),有类似经验的看一遍就知道意思啦:

1、表A订单表:
A01[订单号]   |   A01[产品编号]   |  A02[订单数量]  
--------------------------------------------------
M01           |   P01            |  100
M01           |   P02            |  200
M01           |   P03            |  50

M02           |   P01            |  200
M02           |   P02            |  200

M03           |   P01            |  100
M03           |   P02            |  200
...

2、表B库存表:
B01[产品编号]   |   B02[库存数量]
---------------------------------
P01            |   200
P02            |   400
P03            |   300
...


3、表C发货单表:
C01[订货单号] | C02[产品编号] | C03[订单数量]  | C04[实发数量]  | C05[未发数量] |  C06[主键]
--------------------------------------------------------

    现在想结合表A和表B来产生表C,动态库存联合检测,然后依次插入到表C中,比如上面我要把A表中的三张订货单产生发货单,逻辑描述:

    【1】.订货单里产品数量小于库存数量则插入表C的该产品实发数量为库存数量(相当于库存扒空了),若库存充足,则实发数量即为订单数量,同时未发数量就等于当前产品数量减去实发数量。

    【2】.若C表插入了一条产品记录,继续再插入另一张订货单里的相同产品的时候,就要结合C表发货单表里已插入的产品记录实发数量再结合库存表综合判断。

  比如C表已有一条订货单M01记录:
  C01[订货单号] | C02[产品] | C03[订单数量] | C04[实发数量] | C05[未发数量] | C06[主键]
  ----------------------------------------------------------
  M01               P01        100              100            0              k01
  M01               P02        200              200            0              k02
  M01               P03        50               50             0              k03



   当我继续再插入第二张订货单M02时(有P1和P2两种产品),需先在C表中汇总计算出P1已发了100件(那时库存充足),P1库存还有200-100=100件,P2发了200件(那时库存也充足),P2库存还有400-200=200件,那么我插入第二张订货单里的P1时,发现订单所需要数量200>库存数量100,库存不够,则实发数量就只能取库存里的100,未发数量即为100-200=-100。其它产品同理。

   当插入第三张订货单时,经判断此时P1库存为200-100-100=0件,所以这时就不插入到C表中了,其它依次类推。
   
   提示:库存表B是在这个过程中不作实际修改,库存量的判断也是通过逻辑判断然后再去插入表C的。
   
   针对上面三张订货单,最后表C的实际效果如下:

C01[订货单号] | C02[产品] |  C03[订单数量]  | C04[实发数量]  |  C05[未发数量]  |  C06[主键]
------------------------------------------------------- 
M01               P01               100              100               0             k01
M01               P02               200              200               0             k02
M01               P03               50               50                0             k03

M02               P01               200              100               100           k04
M02               P02               200              200               0             k05

M03               P01               50               50                0             k04

   说明:由于在插入第三张订货单M03时,P02库存已为0,所以不插入,只有P01符合,所以插入进来了。

   想把这个过程用存储过程来实现,等待大牛们献策啊



[解决办法]
类似于先进先出的例子,用游标做吧。
[解决办法]
【1】.订货单里产品数量小于库存数量则插入表C的该产品实发数量为库存数量(相当于库存扒空了),若库存充足,则实发数量即为订单数量,同时未发数量就等于当前产品数量减去实发数量。

小余库存,怎么库存还能扒空?是不是有点问题

热点排行