Я пытаюсь создать CTE на моем столе, чтобы привлечь иерархию сотрудников.Иерархия TSQL CTE
У меня есть отправная точка, которая является «Директором», и я хочу найти всех, кто подчиняется каждому из них.
Вот то, что я до сих пор:
;WITH EmpTable_CTE (FirstName, LastName, QID, Email) AS
(
SELECT FirstName,
LastName,
QID,
Email
FROM EmployeeTable E
WHERE QID = '12345'
UNION ALL
SELECT E.FirstName,
E.LastName,
E.QID,
E.Email
FROM EmployeeTable E
INNER JOIN EmpTable_CTE AS E2 ON E.MgrQID = E2.QID
)
SELECT * FROM EmpTable_CTE
Это похоже на работу предоставляя мне список сотрудников, но нет «иерархии» к нему.
Как я могу использовать FOR XML
для создания иерархии, которую я ищу?
<Director>Bob Smith</Director>
<Direct>Jim Smith</Direct>
<Direct>Employee 1</direct>
<Direct>Employee 2</direct>
<Direct>Employee 3</direct>
<Direct>Bob Jones</Direct>
<Direct>Employee 1</direct>
<Direct>Employee 2</direct>
<Direct>Employee 3</direct>
<Direct>Employee A</direct>
Я уверен, что его просто вопрос размещения FOR XML
линии где-то, но не могу вполне понять это.
Update: Вот SQL Скрипка данных выборки:
http://sqlfiddle.com/#!6/a48f6/1
Это, как я ожидаю, что данные были из скрипки:
<Director>Jim Jones</Director>
<Direct>Bob Jones</Direct>
<Direct>Jake Jones</Direct>
<Direct>Smith Jones</Direct>
<Direct>Carl Jones</Direct>
<Direct>Bobby Jones</Direct>
<Direct>Danny Jones</Direct>
<Direct>Billy Jones</Direct>
Использовать порядок, чтобы получить иерархию –
Текущий вывод - это только таблица результатов, он не выводит структуру XML вообще – SBB
вы можете предоставить некоторые данные примера? –