sql >> Databáze >  >> RDS >> Sqlserver

Aktualizace T-SQL pomocí SUM a Group BY

Pokud tento dotaz vrátí požadované informace:

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;

Pak je to pravděpodobně dotaz UPDATE, který chcete:

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

Musím souhlasit s Gordonem, vaše seskupení se zdá velmi zvláštní. Nejsem si jistý, jestli jsem to pochopil správně (proto důrazně doporučuji nejprve spustit SELECT).



  1. SQL rekurzivní dotaz, který získá všechny předky položky

  2. je MySql dobrý pro velké databáze?

  3. Jak vytvořit uživatele v Oracle a přiřadit oprávnění

  4. Nastavte maximální dobu provádění v MYSQL / PHP