Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Atualização T-SQL com SUM e Group BY


Se esta consulta retornar as informações desejadas:
SELECT *, LINE_TOTAL = SUM(l.LINE_TOTAL) OVER 
    (PARTITION BY l.IC_PO_HEADER, l.RELEASE_NUMBER)
  FROM dbo.PO_HEADER AS h
  INNER JOIN dbo.PO_LINE AS l
  ON h.IC_PO_HEADER = l.IC_PO_HEADER 
  AND h.RELEASE_NUMBER = l.RELEASE_NUMBER;

Então esta é provavelmente a consulta UPDATE que você deseja:
;WITH x AS
(
  SELECT h.TOTAL, lt = SUM(l.LINE_TOTAL) OVER 
    (PARTITION BY l.IC_PO_HEADER, l.RELEASE_NUMBER)
  FROM dbo.PO_HEADER AS h
  INNER JOIN dbo.PO_LINE AS l
  ON h.IC_PO_HEADER = l.IC_PO_HEADER 
  AND h.RELEASE_NUMBER = l.RELEASE_NUMBER
)
UPDATE x SET TOTAL = lt;

Tenho que concordar com Gordon, seu agrupamento parece muito estranho. Não tenho certeza se acertei (e é por isso que recomendo fortemente que você execute o SELECT primeiro).