當我在查詢下運行時,我收到此錯誤。即使我使用選項(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,謝謝你的警告。這是錯字。我編輯過。 –