34,594
社区成员
发帖
与我相关
我的任务
分享
SQLServer2005
--> Test data : @SP_ProductP
declare @SP_ProductP table ([ProductP_ID] int,[ProductP_PID] int,[ProductP_Order] int)
insert into @SP_ProductP
select 11,19,1 union all
select 12,19,2 union all
select 15,19,3
--> Test data : @SP_ProductPItem
declare @SP_ProductPItem table ([ProductPI_PID] int,[ProductPI_Type] int,[ProductPI_MHNO] varchar(12),[ProductPI_UQty] int)
insert into @SP_ProductPItem
select 11,2,'BD0001',11 union all
select 11,2,'BD0003',20 union all
select 11,2,'BD0022',5 union all
select 12,2,'BD0005',3 union all
select 12,4,'H-HP-WH2980',2 union all
select 12,2,'BD0001',2 union all
select 15,4,'H2-HP-WH2980',3 union all
select 15,2,'BD0008',5
;with t as
(select sub.*,main.ProductP_Order,1 level
from (select top 1 *
from @SP_ProductP
where ProductP_PID = 19
order by ProductP_Order desc
) main
inner join @SP_ProductPItem sub
on main.ProductP_ID = sub.ProductPI_PID
union all
select
sub.ProductPI_PID
,sub.ProductPI_Type
,sub.ProductPI_MHNO
,sub.ProductPI_UQty * t.ProductPI_UQty
,main.ProductP_Order,level + 1
from t inner join @SP_ProductP main
on t.ProductPI_Type = 4
and main.ProductP_Order = (t.ProductP_Order - 1)
inner join @SP_ProductPItem sub
on sub.ProductPI_PID = main.ProductP_ID
)
select
ProductPI_MHNO + '=' + ltrim(sum(ProductPI_UQty))
from t
where t.ProductPI_Type = 2
group by ProductPI_MHNO
order by ProductPI_MHNO
-------------------------
BD0001=72
BD0003=120
BD0005=9
BD0008=5
BD0022=30