日期:2014-05-17  浏览次数:20403 次

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         &