当我在查询下运行时,我收到此错误。即使我使用选项(maxrecursion 0),它不会失败,但花了很长时间,仍然看不到它完成。所以我必须修复我的递归代码或需要相同的递归。基本上有两张桌子,一张是雇员,另一张是他们的合同。在同一家长下的每个员工可以有一份合同(父母可以有孩子可以有,但这并不重要,但他们只能有一个。这意味着同一家庭有一行(一份合同))。我需要获得所有合同号码,并为所有父母和子女提供相同的专栏。SQL - 语句完成前最大递归100已用尽
---------------------------- ¦ Contract ¦ ¦--------------¦------------¦ ¦ ID_CONTRACT ¦ ID_EMPLOYEE¦ ¦--------------¦------------¦ ¦ 1 ¦ 1 ¦ ¦--------------¦------------¦ ¦ 2 ¦ 4 ¦ ¦--------------¦------------¦ ¦ 3 ¦ 6 ¦ ¦--------------¦------------¦ ¦ 4 ¦ 7 ¦ ¦--------------¦------------¦ ¦ 5 ¦ 12 ¦ ¦--------------¦------------¦ ¦ 6 ¦ 11 ¦ ¦--------------¦------------¦
---------------------------- ¦ Employee ¦ ¦--------------¦------------¦ ¦ ID_EMPLOYEE ¦ ID_MANAGER ¦ ¦--------------¦------------¦ ¦ 1 ¦ NULL ¦ ¦--------------¦------------¦ ¦ 2 ¦ 1 ¦ ¦--------------¦------------¦ ¦ 3 ¦ 1 ¦ ¦--------------¦------------¦ ¦ 4 ¦ NULL ¦ ¦--------------¦------------¦ ¦ 5 ¦ NULL ¦ ¦--------------¦------------¦ ¦ 6 ¦ NULL ¦ ¦--------------¦------------¦ ¦ 7 ¦ 5 ¦ ¦--------------¦------------¦ ¦ 8 ¦ NULL ¦ ¦--------------¦------------¦ ¦ 9 ¦ 5 ¦ ¦--------------¦------------¦ ¦ 10 ¦ 5 ¦ ¦--------------¦------------¦ ¦ 11 ¦ NULL ¦ ¦--------------¦------------¦ ¦ 12 ¦ NULL ¦ ¦--------------¦------------¦
我的代码是:
drop table #cnt
select DISTINCT
cnt.ID_CONTRACT,
emp.ID_EMPLOYEE,
emp.ID_MANAGER
into #cnt
from
contract cnt (NOLOCK)
inner join
employee emp (NOLOCK) ON cnt.ID_EMPLOYEE = emp.ID_EMPLOYEE
;WITH contactRec AS
(SELECT
cnt.ID_CONTRACT,cnt.ID_EMPLOYEE, cnt.ID_MANAGER
FROM
#cnt cnt
UNION ALL
SELECT
cnt.ID_CONTRACT,emp.ID_EMPLOYEE, emp.ID_MANAGER
FROM
contactRec cnt
Inner join employee emp on emp.ID_MANAGER = cnt.ID_EMPLOYEE
)
select
[ID_CONTRACT]
ID_EMPLOYEE,
ID_MANAGER
from contactRec
IS'cntrementRec'是一个错字还是这个其他表吗? – JNevill
@JNevill,谢谢你的警告。这是错字。我编辑过。 –