sql >> Database >  >> RDS >> Sqlserver

T-SQL-update met SUM en Group BY

Als deze zoekopdracht de gewenste informatie oplevert:

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;

Dan is dit waarschijnlijk de UPDATE-query die u zoekt:

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

Ik ben het met Gordon eens, je groepering lijkt erg vreemd. Ik weet niet zeker of ik het goed heb gedaan (daarom raad ik je ten zeerste aan eerst SELECT uit te voeren).



  1. TO_DSINTERVAL() Functie in Oracle

  2. Voeg NULL in in plaats van lege string met PDO

  3. Is het mogelijk om een ​​database-insert uit te voeren vanaf de Windows-opdrachtregel?

  4. Hoe parseer je een eenvoudig XML-fragment in Oracle PL/SQL en laad je het in een globale tijdelijke tabel?