Я пытаюсь заставить рекурсивный запрос работать с определенной начальной точкой.
Вот некоторые примеры данных из моей таблицы под названием Part_v_Container
:
Serial_No From_Container Part_Key Part_Operation_Key
1234 1233 5678 5
1233 1232 5678 4
1231 1230 5678 3
1230 NULL 5678 2
В основном мы отправляем серийный номер, и затем мне нужно отследить его, следуя всем предыдущим серийным номерам From_Container
в процессе. В моем реальном запросе у меня будет начальная Serial_No
определяемая пользователем переменная.
Вот моя попытка:
;WITH Recursive_cte AS
(SELECT
PContainer.Serial_No
,PContainer.From_Container
,PContainer.Part_Key
,PContainer.Part_Operation_Key
FROM Part_v_Container AS PContainer
WHERE Serial_No LIKE '1234' -- Will be user defined variable
UNION ALL
SELECT
PContainer.Serial_No
,PContainer.From_Container
,PContainer.Part_Key
,PContainer.Part_Operation_Key
FROM Recursive_cte
INNER JOIN
Part_v_Container AS PContainer
ON PContainer.From_Container = Recursive_cte.Serial_No
)
SELECT *
FROM Recursive_cte
Но это возвращает только одну строку, строку Serial_No
= 1234
. Мой реальный набор данных имеет тысячи серийных номеров, и мне нужно иметь возможность выбрать, какие из них я выберу для отслеживания, а не широкий запрос, который является рекурсивным для каждого в моей таблице.
Я попытался прочитать несколько статей и примеров, чтобы заставить это работать, включая одну здесь , но безуспешно.
Заранее благодарю за помощь.