A表 原材料消耗表 结构如下: Prod_ Order NO_ 订单号
Parent No_ 父系产品名
Item 原材料
Qty 消耗的数量
unit cost 单位标准成本
Amount cost 单位标准成本总和
levell BOM 层
[Standard unit per] 标准BOM 所耗费原材料比例
[Actual unit per] 实际消耗原材料的比例[size=8px][Prod_ Order No_] [Parent No_][Item]     [Qty] [Unit cost] [Amount cost][Levell][Standard Unit per][Actual unit per]
PROD10664 T1000-95-16 Tbin63 500 1 500.00 3 0.25 0.25
PROD10664 P339H B339 400 2.45538 982.15 1 1 1
PROD10664 P339H NB2835 19200 0.00113 21.70 1 48 48
PROD10664 P339H NE3670 14400 0.004 57.60 1 36 36
PROD10664 P339H T95-95-75 3600 0.086094 309.94 1 9 9
PROD10664 P339H TOP339 400 2.6394 1055.76 1 1 1
PROD10664 P339H T1000-95-16 400 0.19367 77.47 1 1 1
PROD10664 TOP339 NB2830 14400 0.00091 13.10 2 48 48
PROD10664 TOP339 T1000-95-16 2400 0.19367 464.81 2 8 8
PROD10664 TOP339 T1200-95-16 1050 0.23712 248.98 2 3 3.5
PROD10664 T95-95-75 T2400-95-75 143 2.16741 309.94 2 0.0397 0.0397
PROD10664 B339 NB2830 17178 0.00091 15.63 2 42 42
PROD10664 B339 T1000-95-16 2863 0.19367 554.48 2 7 7
PROD10664 B339 T1200-95-16 1636 0.23712 387.93 2 3 4[/size]B 表 产出品表结构如下: PROD_ order No_ 订单号
Item No_ 产出品平成
Outqty 产出数量
Unit cost 单位标准成本 
Levell 层数
[size=8px]Prod_ Order No_ Item No_ Outqty Uni cost Levell
PROD10664 B339 409 2.105281 2
PROD10664 P339H 400 6.14155 1
PROD10664 T1000-95-16 2000 0.25 3
PROD10664 T95-95-75 3600 0.086094 2
PROD10664 TOP339 300 2.304395 2[/size]要求成本合算按层按产出品进行叠加,分别求出所有产出品包括中间件的实际成本
规则
1. If  (中间件产出量)中间件产出剩余>= 父层消耗量 则 按父层消耗的中间件的数量和单位成本计算,
如果中间件的产出剩余量(中间件的产出量) < 父层消耗量 则 将生产中间件所消耗的原材料冲抵父层消耗中间件的数量和成本,剩余的需要消耗在父层数量还按照中间件自身的标准成本计算。 最终成本向顶层按级按产品叠加上去。成本Rolling up结果集:[size=8px]Prod_ Order No_ Item  Outqty Unit cost Total cost
PROD10664 P339H 400 6.267866  2507.15
PROD10664 T95-95-75 3600 0.086094342 309.94
PROD10664 TOP339 300 2.42296 726.89
PROD10664 B339 400 2.62404 1049.62
PROD10664 T1000-95-16 2000 0.25 500.00[/size]成本合算过程(仅供参考)
[size=8px]Prod_ Order No_ Parent No_ Item Qty Unit cost Amount cost Levell
PROD10664 P339H B339 400 2.62404 1049.62 1
PROD10664 P339H NB2835 19200 0.00113 21.70 1
PROD10664 P339H NE3670 14400 0.004 57.60 1
PROD10664 P339H T95-95-75 3600 0.086094 309.94 1
PROD10664 P339H TOP339 300 2.42296 726.89 1
PROD10664 P339H T1000-95-16 400 0.19367 77.47 1
PROD10664 P339H TOP339 100 2.6394 263.94 2

PROD10664 T95-95-75 T2400-95-75 143 2.16741 309.94 2

PROD10664 TOP339 NB2830 14400 0.00091 13.10 2
PROD10664 TOP339 T1000-95-16 2400 0.19367 464.81 2
PROD10664 TOP339 T1200-95-16 1050 0.23712 248.98 2

PROD10664 B339 NB2830 16800 0.00091 15.29 2
PROD10664 B339 T1000-95-16 800 0.19367 154.94 2
PROD10664 B339 T1200-95-16 1600 0.23712 379.39 2
PROD10664 B339 T1000-95-16 2000 0.25 500.00 2

PROD10664 T1000-95-16 Tbin63 500 1 500 3[/size]创建测试表数据代码如下:
表Adeclare @temp as table(
[Prod_ Order No_] nvarchar(20),
[Source No_] nvarchar(20),
[Item No_] nvarchar(20),
[Quantity] decimal(38,20),
[Cost per unit] decimal(38,20),
[Cost amount] decimal(38,20),
levell int,
[Standard unit per] decimal(38,20),
[Actual unit per] decimal(38,20)
)
insert @temp
select 'PROD10664','T1000-95-16','Tbin63',500,1,500.00,3,0.25,0.25 union all
select 'PROD10664','P339H','B339',400,2.45538,982.15,1,1,1 union all
select 'PROD10664','P339H','NB2835',19200,0.00113,21.70,1,48,48 union all
select 'PROD10664','P339H','NE3670',14400,0.004,57.60,1,36,36 union all
select 'PROD10664','P339H','T95-95-75',3600,0.086094,309.94,1,9,9 union all
select 'PROD10664','P339H','TOP339',400,2.6394,1055.76,1,1,1 union all
select 'PROD10664','P339H','T1000-95-16',400,0.19367,77.47,1,1,1 union all
select 'PROD10664','TOP339','NB2830',14400,0.00091,13.10,2,48,48 union all
select 'PROD10664','TOP339','T1000-95-16',2400,0.19367,464.81,2,8,8 union all
select 'PROD10664','TOP339','T1200-95-16',1050,0.23712,248.98,2,3,3.5 union all
select 'PROD10664','T95-95-75','T2400-95-75',143,2.16741,309.94,2,0.0397,0.0397 union all
select 'PROD10664','B339','NB2830',17178,0.00091,15.63,2,42,42 union all
select 'PROD10664','B339','T1000-95-16',2863,0.19367,554.48,2,7,7 union all
select 'PROD10664','B339','T1200-95-16',1636,0.23712,387.93,2,3,4
表 B 
Declare @Output as table(
[Prod_ Order No_] nvarchar(20),
[Source No_] nvarchar(20),
[Outpqty] decimal(38,20),
[Cost per] decimal(38,20),
Levell int)
     insert @Output
select 'PROD10664', 'B339', 409, 2.105281, 2 union all
select 'PROD10664', 'P339H', 400, 6.141550, 1 union all
select 'PROD10664', 'T1000-95-16', 2000, 0.25, 3 union all
select 'PROD10664', 'T95-95-75', 3600, 0.086094, 2 union all
select 'PROD10664', 'TOP339', 300, 2.304395, 2

解决方案 »

  1.   

    表A,B 排版倒入到查询中版面格式就正常啦,拷贝到Excel 中下面的格式就正常啦
    重新排版的结果集
    Prod_OrderNo_ Item Outqty Unitcost Totalcost
    PROD10664 P339H 400 6.267866 2507.15
    PROD10664 T95-95-75 3600 0.086094342 309.94
    PROD10664 TOP339 300 2.42296 726.89
    PROD10664 B339 400 2.62404 1049.62
    PROD10664 T1000-95-16 2000 0.25 500.00
    重新排版的成本合算参考:
    Prod_OrderNo_ ParentNo_ Item Qty Unitcost Amountcost Levell
    PROD10664 P339H B339 400 2.62404 1049.62 1
    PROD10664 P339H NB2835 19200 0.00113 21.70 1
    PROD10664 P339H NE3670 14400 0.004 57.60 1
    PROD10664 P339H T95-95-75 3600 0.086094 309.94 1
    PROD10664 P339H TOP339 300 2.42296 726.89 1
    PROD10664 P339H T1000-95-16 400 0.19367 77.47 1
    PROD10664 P339H TOP339 100 2.6394 263.94 2PROD10664 T95-95-75 T2400-95-75 143 2.16741 309.94 2PROD10664 TOP339 NB2830 14400 0.00091 13.10 2
    PROD10664 TOP339 T1000-95-16 2400 0.19367 464.81 2
    PROD10664 TOP339 T1200-95-16 1050 0.23712 248.98 2PROD10664 B339 NB2830 16800 0.00091 15.29 2
    PROD10664 B339 T1000-95-16 800 0.19367 154.94 2
    PROD10664 B339 T1200-95-16 1600 0.23712 379.39 2
    PROD10664 B339 T1000-95-16 2000 0.25 500.00 2PROD10664 T1000-95-16 Tbin63 500 1 500 3