我正在研究pic基本(yippee)並將其轉換爲.NET的報告。最終報告如下。該表(僅顯示一部分數據以保持簡單)具有ParentID(ID)和其中的ChildID,並基本上連接到沒有可用的ChildID(NULL)。我寫了一個我認爲可以正常運行的程序,但坐着並沒有返回任何類型的結果。 SQL不是我的強項。分層產品結構
報告
0......... SA33028
1........ 42S0131
1........ 5S0127
1........ 6S0175
1........ SA33023
2....... 16S0142
2....... 18S0103
2....... 24S0108
2....... 28SM0105
2....... S30461.AI
2....... S30463
3...... S28807
3...... S28807
2....... S30641
2....... S31134
2....... S9383
2....... SA29801
3...... 16S0116
3...... S27798
3...... S31170
3...... SA30059
4..... 38S0116
4..... 7S0105
4..... S19430.145
5.... 7SM0145
6... 7SM0145.001
6... 7SM0145.002
5.... S19430
4..... S19431
2....... SA30910
表:
ParentID ChildID
SA33028 42S0131
SA33028 5S0127
SA33028 6S0175
SA33028 79S0101
SA33028 S11870
SA33028 S30151
SA33028 SA33023
SA33028 SA33029
SA33023 S30463
S30463 S28807
SQL過程:
ALTER PROCEDURE [dbo].[getHierarchy]
@Parent VARCHAR(20)
AS
BEGIN
SET NOCOUNT ON;
WITH AllParts([PSNbr], [ChildID], [ParentID])
AS
(
SELECT Child.Parent_Part AS PSNbr,
Child.Parent_Part AS ChildID,
Parent.Parent_Part AS ParentID
FROM ps AS Child
LEFT OUTER JOIN ps AS Parent
ON Child.Component_Part = Parent.Parent_Part
UNION ALL
SELECT AllParts.PSNbr AS PSNbr,
AllParts.ParentID AS ChildID,
NewParent.Component_Part AS ParentID
FROM AllParts
INNER JOIN PS AS NewParent
ON AllParts.ParentID = NewParent.Parent_Part
AND AllParts.ParentID <> AllParts.ChildID
INNER JOIN PS as NewParentInfo
ON NewParent.Component_Part = NewParentInfo.Parent_Part
)
SELECT AllParts.[PSNbr],
AllParts.[ParentID]
FROM AllParts
WHERE PSNbr = @Parent;
SQL語句的結果需要看起來像爲了生成報告嗎? – eoldre
像例子中的初始報告一樣。哪裏有0-x#級。 – user3249420