2016-04-16 21 views
0

Meine Daten:Wie kann ich eine Prozedur für ... schreiben?

enter image description here

Mein Prozedur-Code ist:

CREATE PROCEDURE SearchParent 
    @ID bigint = 7 
AS 
BEGIN 
    -- how write code to get data like picture down 
END 
GO 

Wie kehre ich wie Daten:

enter image description here

+2

Schauen Sie sich Beispiele für rekursive CTEs an –

Antwort

2
DECLARE @ID bigint = 7 

DECLARE @table TABLE 
(
    id bigint, 
    name nvarchar(2), 
    parentid bigint 
) 

INSERT INTO @table 
VALUES (1, 'a', 0), (2, 'b1', 1), (3, 'b2', 1), 
     (4, 'c1', 2), (5, 'c2', 2), (6, 'd1', 3), 
     (7, 'd2', 3) 

--This part goes into the procedure 
;WITH cte AS 
(
    SELECT 
     id, name, parentid 
    FROM 
     @table --change table name to yours 
    WHERE 
     id = @ID 

    UNION ALL 

    SELECT 
     t.* 
    FROM 
     cte c 
    INNER JOIN 
     @table t ON c.parentid = t.id 
) 
SELECT * 
FROM cte 
ORDER BY id ASC 
OPTION (MAXRECURSION 100) 

Ausgang:

id name parentid 
---- ---- --------- 
1 a 0 
3 b2 1 
7 d2 3 
+0

Können Sie den Code erklären? – shahroz

+0

Sie können dies lesen, um https://technet.microsoft.com/en-us/library/ms186243%28v=sql.105%29.aspx zu klären – gofr1

Verwandte Themen