[英]Hierarchical product structure
我正在處理一個在pic basic(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;
為了紀念KISS原則,我請問。 您如何測試程序? 您是直接按F5還是在SQL中運行它? 嘗試突出顯示從“ BEGIN”到“ END”的所有內容,然后按F5。 (順便說一句,上面的示例中沒有“ END”)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.