Я строю запрос, в котором мне нужно, чтобы результаты были возвращены в том порядке, в котором запрос нашел значения.
ЗДЕСЬ ЗАПРОС
DECLARE @Query TABLE
(
[ParentID] VARCHAR(50) NULL,
[ChildID] VARCHAR(50) NOT NULL,
[Action] VARCHAR(max) NOT NULL
);
WITH q
AS
(
SELECT DISTINCT M1.[ParentID], M1.[ChildID], M1.[Action]
FROM [dbo].[xNodes] M1
LEFT JOIN [dbo].[xNodes] M2 ON M1.[ParentID] = M2.[ChildID]
WHERE M1.[ChildID] = 'PCMN014'
UNION ALL
SELECT M.[ParentID], M.[ChildID], M.[Action]
FROM q
INNER JOIN [dbo].[xNodes] M ON q.[ParentID] = M.[ChildID]
)
INSERT INTO @Query ([ParentID], [ChildID], [Action])
SELECT DISTINCT * FROM q;
SELECT DISTINCT * FROM @Query
SELECT * FROM @Query q WHERE [ParentID] IS NULL UNION ALL
SELECT * FROM @Query q WHERE [ParentID] = 'IDS' UNION ALL
SELECT * FROM @Query q WHERE [ParentID] = 'EFL' UNION ALL
SELECT * FROM @Query q WHERE [ParentID] = 'PEFL001' UNION ALL
SELECT * FROM @Query q WHERE [ParentID] = 'PCMN010'
Уродливый союзвсе в конце показывает порядок, в котором я хочу их получить. Следующая таблица представляет то, что я получаю из своего запроса.
***ParentID, ChildID, Action***
NULL, IDS, Launch IDS
EFL, PEFL001, [Click] Case Management > Case Review Workbasket
IDS, EFL, Log into IDS
PCMN010, PCMN014, [Click] Title Search arrow beside Title
PEFL001, PCMN010, [Click] User Search arrow beside User ID
PEFL001, PCMN010, [Click] User Search arrow under File Location - Person
Ниже я ожидаю следующего.Обратите внимание, что ParentID 2-й строки - это ChildID первой строки и т. Д.
***ParentID, ChildID, Action***
NULL, IDS, Launch IDS
IDS, EFL, Log into IDS
EFL, PEFL001, [Click] Case Management > Case Review Workbasket
PEFL001, PCMN010, [Click] User Search arrow beside User ID
PEFL001, PCMN010, [Click] User Search arrow under File Location - Person
PCMN010, PCMN014, [Click] Title Search arrow beside Title