sql >> Database teknologi >  >> RDS >> Sqlserver

T-SQL-opdatering med SUM og Group BY

Hvis denne forespørgsel returnerer de ønskede oplysninger:

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;
 

Så er dette sandsynligvis den UPDATE-forespørgsel, du ønsker:

;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;

Jeg må være enig med Gordon, din gruppering virker meget mærkelig. Jeg er ikke sikker på, om jeg fik det rigtigt (det er derfor, jeg stærkt anbefaler, at du kører SELECT først).



  1. MAX vs Top 1 - hvad er bedre?

  2. MS SQL Server krydstabel begrænsning

  3. Hvordan kan jeg bruge transparent datakryptering med MySQL?

  4. Nulstil AutoIncrement i SQL Server efter sletning