sql >> Databasteknik >  >> RDS >> Sqlserver

T-SQL-uppdatering med SUM och Group BY

Om denna fråga returnerar den information du vill ha:

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;

Då är det förmodligen den här UPPDATERINGSfrågan du vill ha:

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

Jag måste hålla med Gordon, din gruppering verkar väldigt märklig. Jag är inte säker på om jag fattade det rätt (det är därför jag starkt rekommenderar att du kör SELECT först).



  1. hämta data från mysql-databasen att använda i javascript

  2. Lagra filer i SQL-databas med FILESTREAM – Del 1

  3. MySQL-resultat som kommaseparerad lista

  4. Försöker ändra en begränsning i PostgreSQL