Я знаю, что есть несколько вопросов об этом исключении для SO, но ничего такого, что мне не помогло.
У меня следующий запрос, который дает мне "Multi-part identifier 'claim.fiData' could not be bound"
-Exception:
SELECT claim.idData FROM tabData as claim
INNER JOIN dbo._previousClaimsByFiData(claim.fiData) AS prevClaim
ON prevClaim.idData=claim.fiData
GROUP BY claim.idData
HAVING(prevClaim.fiMaxActionCode IN (8, 23, 24) and
prevClaim.Repair_Completion_Date >= DATEADD(day,-90,prevClaim.Repair_Completion_Date))
ORDER BY claim.idData
previousClaimsByFiData
- это табличная функция, которая возвращает все предыдущие записи. Вы можете найти его здесь , если вам интересно.
Теперь я хочу найти все заявки, которые имели предыдущие заявки за последние 90 дней, с maxActionCode IN (8, 23, 24).
Я также попробовал следующее:
SELECT count(*) FROM tabData as claim
where exists(
select 1 from dbo._previousClaimsByFiData(claim.fiData)as prevClaim where
prevClaim.fiMaxActionCode IN(8, 23, 24)and
prevClaim.Repair_Completion_Date >= DATEADD(day,-90,claim.Repair_Completion_Date)
)
Но это дает мне "The maximum recursion 100 has been exhausted before statement completion"
- исключение.
Почему я получаю эти исключения и как их избежать?
Спасибо
EDIT:
задал другой вопрос , который сводится к основной проблеме. Я могу удалить это, когда получу ответ.
UPDATE:
Марк ответил на упрощенный вопрос в соответствии с этим здесь .
Таким образом, путь - это Cross Apply .
Но теперь у меня есть следующая проблема, о которой я уже упоминал выше. Я получаю сообщение об ошибке «Максимальная рекурсия 100 была исчерпана до завершения инструкции» через несколько секунд.
Я не знаю, где добавить опцию (MAXRECURSION 0), потому что я получаю «неправильный синтаксис», если я пытаюсь добавить его в Inline-TVF.
Мой текущий запрос:
SELECT claim.idData FROM tabData claim
CROSS APPLY dbo._previousClaimsByFiData(claim.fiData)AS tvfData
GROUP BY claim.idData,claim.Repair_Completion_Date,tvfData.Repair_Completion_Date,tvfData.fiMaxActionCode
HAVING(tvfData.fiMaxActionCode IN (8, 23, 24) and
tvfData.Repair_Completion_Date >= DATEADD(day,-90,claim.Repair_Completion_Date))
ORDER BY claim.idData
ОБНОВЛЕНИЕ: решение было добавить ОПЦИЮ (MAXRECURSION 0) в конец инструкции SELECT.