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 作为模板以自定义您的最终查询。
我正在尝试使用以下查询更新我的临时 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 作为模板以自定义您的最终查询。