iT邦幫忙

0

sunlike bom

sunlike bom
對於sunlike的bom展開方式思考了好久
因為它是屬於層層疊的方式進行展開
基本上要展開bom只需要用到tf_bom即可

--首先當然要定義讓使用者輸入母件代號的欄位
DECLARE @S VARCHAR(13)
SET @S=:prdt!母件代號

;WITH
--本處重點在於 UNION ALL 及LEVEL
--UNION ALL功能為連結LEVEL為分層
--2相結合會達成展開動作一直到母件對應不到子件為止
--PS:子母件對應為BOM_NO及ID_NO
BOM(BOM_NO,PRD_NO,NAME,QTY,ID_NO,LEVEL)
AS
(
SELECT BOM_NO,PRD_NO,NAME,QTY,ID_NO,1
FROM TF_BOM
WHERE BOM_NO=@S + '->'
UNION ALL
SELECT A.BOM_NO,A.PRD_NO,A.NAME,A.QTY,A.ID_NO,C.LEVEL+1
FROM TF_BOM AS A
INNER JOIN BOM AS C ON A.BOM_NO=C.ID_NO
)
SELECT
LEVEL AS LV,
BOM_NO,
PRD_NO,
NAME AS DESCRIPTION,
QTY,
FROM BOM ORDER BY level,bom_no,PRD_NO

歡迎有不懂的地方可以提問


尚未有邦友留言

立即登入留言