樹型遞歸在BOM中測算可用量的範例

在SqlServer 2005以上提供了With 關鍵字的遞歸算法,這種對很多問題提供了較大的方法。在這兒一個單一產品多階子件現存是否滿足投產量要求爲例。

BOM結構

BOM用量與相應的現存量

注:qty爲用量,Cqty爲現存量

根據以上模型,目前投產A產品3個單位,求各層是否符合投產條件,及投產後的餘量

WITH CYX AS(
SELECT 1 as lev,P,C,QTY,QTY*3 AS DQTY,CQTY,QTY*3-CQTY AS CY
FROM tempBOM WHERE P='A'
UNION ALL
SELECT cyx.lev+1 as lev,TB.P,TB.C,TB.QTY,CASE WHEN CYX.CY<=0 THEN 0 ELSE TB.QTY*CYX.CY END  AS DQTY,TB.CQTY,
CASE WHEN CYX.CY<=0 THEN 0 ELSE TB.QTY*CYX.CY-TB.CQTY END AS CY
FROM CYX
INNER JOIN TEMPBOM TB ON CYX.C=TB.P
)
SELECT *,case when CY<=0 then 'OK' ELSE 'FALSE' END AS S FROM CYX 
GO

說明:

LEV:BOM層次;P:父項;C:子項;QTY:用量;Dqty:需求量;Cqty:現存量,CY:差異;S:是否符合

這種方式對於多層BOM有着不錯的表示。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章