下的所有CTE例子,我可以相對於計數發現包括經典的「有多少直接報告」做了經理有。 我有一個微妙的想法,我不知道。 Essenitally我希望看到在一個層次,許多人在總共多少皆下品,各級各節點。 所以如果我在一家公司裏有12個人,那麼他頂下的那個人有11個,他可能有3個直接的報告,第一個可能有2個,第二個4和第三個3 等等 我只是可以不知道如何獲得節點下所有節點的總和,請幫助!T-SQL CTE計算所有葉節點
1
A
回答
1
如果它必須是熱膨脹係數,這個應該工作(基於AdventureWorks數據庫查詢)。 選擇填充CTE以遞歸方式構建給定EmployeeID上方的所有管理者列表。 最終選擇計算AllManagers列中給定EmployeeID的所有出現次數。
WITH EmployeeList (EmployeeID, ManagerID, Level, AllManagers) AS
(
SELECT
EmployeeID,
ManagerID,
0 AS Level,
CAST(',' + CAST(EmployeeID AS varchar) + ',' AS varchar) AS AllManagers
FROM HumanResources.Employee
WHERE ManagerID IS NULL
UNION ALL
SELECT
HumanResources.Employee.EmployeeID,
HumanResources.Employee.ManagerID,
EmployeeList.level + 1 AS level,
CAST(AllManagers + CAST(HumanResources.Employee.EmployeeID AS varchar) + ',' AS varchar) AS AllManagers
FROM HumanResources.Employee inner join EmployeeList ON HumanResources.Employee.ManagerID = EmployeeList.employeeID
)
SELECT
EmployeeID,
ManagerID,
Level,
AllManagers,
--have to subtract 1 because AllManagers path includes employee own ID
(SELECT COUNT(*) FROM EmployeeList T1 WHERE T1.allmanagers LIKE '%,' + CAST(EmployeeList.employeeid AS varchar) + ',%') - 1 AS Subordinates
FROM EmployeeList
ORDER BY Level
0
你必須有自引用外鍵列的表中所示的樹結構,並且要計算樹中的每個節點的後代的數量。 您將「基於遞歸CTE的解決方案」的段落讀這篇文章http://www.sqlmag.com/article/tsql3/calculate-the-sum-of-salaries-in-an-employee-tree- 更格外的有回答您的問題。 聰明的部分是,你有你的結果,而不必建立一個「級別」列(如果你不需要它)。
相關問題
- 1. 計算從根到葉的所有路徑的所有節點
- 2. 計算樹中的葉節點
- 3. 在沒有葉子/節點的二叉樹中計算節點?在計劃中?
- 4. 計算二叉樹中的節點數和葉節點數
- 5. 遞歸cte - 標記所有葉子
- 6. 莖和葉節點算法
- 7. 返回使用遞歸CTE的所有非葉子節點MS SQL
- 8. PHP計算樹中的所有節點
- 9. 檢索java的所有葉節點TreeMap
- 10. 計數JSON葉節點
- 11. 找到特定節點的所有子節點,直到葉節點
- 12. TSQL MAXRECURSION在CTE
- 13. TSQL CTE層次
- 14. TSQL使用窗口和CTE替換「古怪的更新」計算
- 15. 如何計算二叉搜索樹中的非葉節點?
- 16. 計算B +樹葉節點的阻塞因子
- 17. 如何計算extjs樹中節點的葉數?
- 18. TSQL CTE和排序
- 19. jquery如何計算一種類型的父節點的所有xml節點
- 20. 遞歸CTE返回路徑中的所有連接節點
- 21. 如何從任何父節點的所有葉子節點在樹上
- 22. 我如何得到Jtree Java中所有父節點的葉節點數
- 23. 解析樹知道所有父節點和葉節點的祖先
- 24. TSQL計算總和
- 25. 如何計算TSQL
- 26. TSQL計算在coolumn
- 27. 使用計算節點上的所有核心是否合理?
- 28. 計算鏈中所有節點的累積值R
- 29. 計算HTML文件中的所有節點
- 30. 如何使用XPath表達式選擇所有葉節點?
能否請您介紹一下你的數據結構。你提到了Common Table Expressions,但根據你的表結構可能不需要。 – 2011-05-12 16:20:47
員工表。 – Paul 2011-05-12 16:22:17
員工ID,reports_to_employee-ID,名稱..... Report_to_employee_id FK的員工表,所以它是一個gerneric hierarchry在一個表表示。 – Paul 2011-05-12 16:23:21