Error: An aggregate may not appear UPDATE statement

Error: An aggregate may not appear UPDATE statement

我正在尝试使用以下查询更新我的临时 Table 列:

Update T
Set T.ConsumedQuantity  = SUM(MA.Quantity)
from @TempTable T
Join DefaultShopView DSV on DSV.OperationId =@OpId
join MySpec MS with(nolock) on MS.WorkRequest = DSV.WorkRequest
join MyActual MA with(nolock) on MA.SpecId = MS.SpecId 

但是出现错误:

An aggregate may not appear in the set list of an UPDATE statement.

我该如何更新这些值?

你可以使用这个:

Update T
Set T.ConsumedQuantity  = (select SUM(MA.Quantity) from @TempTable
            Join DefaultShopView DSV on DSV.OperationId =@OpId
            join MySpec MS with(nolock) on MS.WorkRequest = DSV.WorkRequest
            join MyActual MA with(nolock) on MA.SpecId = MS.SpecId ) 
from @TempTable T
Join DefaultShopView DSV on DSV.OperationId =@OpId
join MySpec MS with(nolock) on MS.WorkRequest = DSV.WorkRequest
join MyActual MA with(nolock) on MA.SpecId = MS.SpecId 

使用 CTE 最简单:

;WITH CTE as (
    SELECT T.IDENTIFIERS_FIELDS, SUM(MA.Quantity) as MA_Sum
    from @TempTable T
    DefaultShopView DSV on DSV.OperationId =@OpId
    join MySpec MS with(nolock) on MS.WorkRequest = DSV.WorkRequest
    join MyActual MA with(nolock) on MA.SpecId = MS.SpecId 
    GROUP BY GROUPING_FIELDS_IF_ANY
)
Update T
Set T.ConsumedQuantity  = MA_Sum
from @TempTable T
Join CTE on T.IDENTIFIERS_FIELDS = CTE.IDENTIFIERS_FIELDS

阅读题不清楚是否需要分组。获取此 select 作为模板以自定义您的最终查询。