【发布时间】:2014-10-05 19:57:52
【问题描述】:
我正在使用的工具中有 2 个表。
一个是员工数据库,另一个是一个表格,其中包含每个直接下属的人数的计数。
以下是我设置的示例表: 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 Fiddle 很好,但您至少可以设置它,使字段名称与您的示例查询匹配。
-
抱歉,已修复:sqlfiddle.com/#!6/ff315
标签: sql sql-server tsql stored-procedures