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).