Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cập nhật T-SQL với SUM và Group BY

Nếu truy vấn này trả về thông tin bạn muốn:

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;

Sau đó, đây có thể là truy vấn CẬP NHẬT mà bạn muốn:

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

Tôi phải đồng ý với Gordon, cách phân nhóm của bạn có vẻ rất lạ. Tôi không chắc liệu mình đã hiểu đúng chưa (đó là lý do tại sao tôi thực sự khuyên bạn nên chạy CHỌN trước).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chọn vào câu lệnh mà nguồn là cơ sở dữ liệu khác

  2. Nhập các cột đã chọn từ tệp CSV vào bảng SQL Server

  3. chuyển đổi Số sê-ri Ngày trong Excel thành Ngày Thông thường

  4. Dấu phân tách hàng nghìn trong SQL Server 2008 cho một cột

  5. Truy vấn phân cấp trong SQL Server 2005