我在我的工具中使用了2个表。TSQL递归查询
一个是员工数据库,另一个是包含每个直接报告人数的直接报告数的表。
以下是我已经设置了样本表: http://sqlfiddle.com/#!6/0b414/3
下面是一个简单的查询我的工作。但是,我需要做的是将记录插入到另一个表中,并记录每个人的指示数。
如果他们没有直接的,他们不会被添加到表中。
;WITH employees_CTE (FirstName, LastName, QID, Email, SupQID, Title) AS
(
SELECT FirstName,
LastName,
QID,
Email,
SupQID,
Title
FROM employees E
WHERE QID = 'Q12345'
UNION ALL
SELECT E.FirstName,
E.LastName,
E.QID,
E.Email,
E.SupQID,
E.Title
FROM employees E
INNER JOIN employees_CTE AS E2 ON E.SupQID = E2.QID
--Some type of INSERT statement here if the number of people reporting to you are greater than zero.
)
CTE就我所能得到的。我被困在搞清楚如何从CTE中获得计数,所以我知道是否将它插入到table2中。
直接报告是某人的SupQID是您自己的。 supQID字段是员工的主管(直接)。
任何想法?
编辑:需要递归执行此操作而不是通过连接执行此操作的原因是为了节省空间:并非所有部门都需要此类跟踪,并且能够说“通过X报告的任何人”会留下选项如果有需要的话,可以打开将来打开它,或者增加部门。
SQL小提琴很好,但您至少可以设置它,使字段名称与示例查询匹配。 – 2014-10-05 20:06:23
对不起,修正:http://sqlfiddle.com/#!6/ff315 – SBB 2014-10-05 20:08:18