我知道围绕此例外的问题有几个问题,但没有任何可以帮助我的问题。无法绑定多部分标识符
我有以下查询给了我一个"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
是表值函数,是返回所有以前的记录。如果你有兴趣,你可以找到here。 现在我想查找在过去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"
-Exception。
为什么我会得到这些例外以及如何避免它们?
谢谢
编辑: 问another question这是对主要问题减少。当我在那里得到答案时,我可以删除它。
更新: Marc根据这个here回答了一个简化的问题。 所以要走的路是Cross Apply。 但是,现在我有下面的问题,我已经在上面提到了。我得到了“最大递归100在语句完成前已耗尽”几秒钟后出现错误。 我不知道在哪里添加OPTION(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
UPDATE:将溶液添加OPTION(MAXRECURSION 0)到SELECT语句的末尾。