Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Актуализация на T-SQL със SUM и Group BY

Ако тази заявка върне информацията, която искате:

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;

Тогава това вероятно е заявката за АКТУАЛИЗИРАНЕ, която искате:

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

Трябва да се съглася с Гордън, групирането ви изглежда много странно. Не съм сигурен дали съм го разбрал правилно (поради което силно препоръчвам първо да стартирате SELECT).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Използване на BETWEEN в поле varchar, а не числово поле?

  2. SQL Server 2008, различни клаузи WHERE с една заявка

  3. IIS7, SQL 2008 и ASP.NET MVC сигурност

  4. PowerShell - Списък на всички SQL екземпляри в моята система?

  5. Метаданни на SQL Server в intellisense?