我需要从另一个表中的字段计数更新临时表的列。我试图使用以下查询执行此操作,但我收到语法错误。
我该如何撰写此查询?
谢谢!
UPDATE #ResultadosTest
SET PalletsReservados = COUNT(pe.paen_numero)
FROM #ResultadosTest RT, dba.spro_palletencab pe
WHERE pe.pate_tempor = RT.pate_tempor
AND pe.expo_codigo = RT.expo_codigo
AND pe.WeekLinId = RT.WeekLinId
AND pe.plde_codigo = RT.plde_codigo
AND pe.paen_estado = 1
AND ISNULL(pe.LoteCargaId, 0) <> 0
AND ISNULL(pe.PREMOPID, 0) <> 0
GROUP BY
pe.pate_tempor, pe.expo_codigo, pe.WeekLinId, pe.plde_codigo
错误是:
第10行,关键字&#39; GROUP&#39;附近的语法不正确(42000,156)
答案 0 :(得分:1)
您无法在update语句中直接使用聚合函数。相反,你可以得到一个派生表
Update #ResultadosTest
SET PalletsReservados = ppp.countpaen_numero
From (Select Count(pe.paen_numero) as countpaen_numero ,pe.pate_tempor,spro_palletencab,........
FROM #ResultadosTest RT,dba.spro_palletencab pe
Where pe.pate_tempor=RT.pate_tempor
AND pe.expo_codigo=RT.expo_codigo
AND pe.WeekLinId=RT.WeekLinId
AND pe.plde_codigo=RT.plde_codigo
AND pe.paen_estado=1 AND IsNull(pe.LoteCargaId,0)<>0 AND IsNull(pe.PREMOPID,0)<>0
GROUP BY pe.pate_tempor,pe.expo_codigo,pe.WeekLinId,pe.plde_codigo ) ppp
Where ppp.pate_tempor = Field..
答案 1 :(得分:0)
第一组,然后加入
Update #ResultadosTest
SET PalletsReservados = pe.Cnt
FROM #ResultadosTest RT
JOIN (
SELECT pate_tempor, expo_codigo, WeekLinId, plde_codigo, Count(pe.paen_numero) cnt
FROM dba.spro_palletencab pe
WHERE paen_estado=1 AND IsNull(LoteCargaId,0)<>0 AND IsNull(PREMOPID,0)<>0
GROUP BY pate_tempor,expo_codigo,WeekLinId,plde_codigo
) pe ON pe.pate_tempor=RT.pate_tempor
AND pe.expo_codigo=RT.expo_codigo
AND pe.WeekLinId=RT.WeekLinId
AND pe.plde_codigo=RT.plde_codigo;
答案 2 :(得分:0)
应该像:
UPDATE RT
SET PalletsReservados = pe.ctr
FROM #ResultadosTest RT
INNER JOIN
(
SELECT pate_tempor
,expo_codigo
,WeekLinId
,plde_codigo
,Count(pe.paen_numero) as ctr
FROM dba.spro_palletencab
WHERE paen_estado = 1
AND ISNULL(LoteCargaId,0) <> 0
AND ISNULL(PREMOPID,0) <> 0
GROUP BY pe.pate_tempor
,pe.expo_codigo
,pe.WeekLinId
,pe.plde_codigo
) pe
ON pe.pate_tempor = RT.pate_tempor
AND pe.expo_codigo = RT.expo_codigo
AND pe.WeekLinId = RT.WeekLinId
AND pe.plde_codigo = RT.plde_codigo