连接到子查询中的顶部查询行列

时间:2014-08-31 02:07:18

标签: tsql sql-server-2012

我得到"多部分标识符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,但仍然无法正常工作。

1 个答案:

答案 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  
相关问题