SupplyName(加工户)
ptcksn(出库单号)  
ptcode(原料编码)       
ptnum(原料数量)      
pbrksn(入库单号)      
pbcode(成品编码)       
num(成品数量)
原料送给加工户加工成成品,一笔出库单分几次入库,加工户          出库单号     原料编码    原料数量   入库单号     成品编码  成品数量
---------------------------------------------------------------------------
aa           2008100002   Yl001      20.00     2008100002   001     3.00 
aa           2008100002   Yl001      20.00     2008100003   001     7.00 以上数据表示出库单号为2008100002,原料编码为Yl001的原料发出20.00米,收回来2次成品一次3米(还有20-3=17米未收回),
一次7米(此时有发出的20米-已经收回的3米-现在收回的7米=10米),现在要在后面加一列显示为入库的数量,就是加工户          出库单号     原料编码    原料数量   入库单号     成品编码  成品数量    未收回
----------------------------------------------------------------------------------
aa           2008100002   Yl001      20.00     2008100002   001     3.00      17.00
aa           2008100002   Yl001      20.00     2008100003   001     7.00      10.00
不知道现在有没有说清楚。 

解决方案 »

  1.   

    --生成测试数据
    select 'aa' 加工户,'2008100002' 出库单号,'Yl001' 原料编码,20.00 原料数量,
    2008100002 入库单号,'001' 成品编码,3.00 成品数量 into #t
    union all select 'aa','2008100002','Yl001',20.00,2008100003,'001',7.00 --查询
    select *,
    未收回=原料数量-
    isnull((select sum(成品数量) from #t where 原料编码=t.原料编码 and 入库单号<t.入库单号),0)
    -成品数量
     from #t t/*结果
    加工户 出库单号 原料编码 原料数量 入库单号   成品编码 成品数量  未收回     
    ---- ---------- ----- --------- ----------- ---- ----- ---------------
    aa   2008100002 Yl001    20.00  2008100002  001    3.00     17.00
    aa   2008100002 Yl001    20.00  2008100003  001    7.00     10.00
    */