我得到"多部分标识符TT.CreatedOnUTC无法绑定"子查询中的WHERE部分出错。不知道为什么?修复此查询的正确方法是什么?
UPDATE TT
SET PreviouslyDeductedAmount = DrA.AdvancedAmount
FROM #temp TT
INNER JOIN
(SELECT cRefNumber ReferenceId, SUM(nCashAmount) AdvancedAmount
FROM prodsp.dbo.DriverAdvance (NOLOCK) DA
WHERE da.dDate >= TT.CreatedOnUTC
GROUP BY DA.cRefNumber) DrA ON TT.ComdataReferenceId = DrA.ReferenceId
基本上在#temp TT我有排,我想找到所有"进展和#34;通过参考编号加入,我需要确保这些进展发生在我的TT表格之后的日期,因此WHERE ......
没有WHERE就可以正常工作,我尝试使用#temp而不是TT,但仍然无法正常工作。
答案 0 :(得分:2)
您可以使用APPLY运算符。喜欢这个
UPDATE TT
SET PreviouslyDeductedAmount = DrA.AdvancedAmount
FROM #temp TT
CROSS APPLY ( SELECT cRefNumber ReferenceId ,
SUM(nCashAmount) AdvancedAmount
FROM prodsp.dbo.DriverAdvance (NOLOCK) DA
WHERE da.dDate >= TT.CreatedOnUTC AND TT.ComdataReferenceId = DrA.ReferenceId
GROUP BY DA.cRefNumber
) DrA