Nếu chúng ta chỉ giả sử 1 mức phân cấp. Nếu nhiều cấp độ của hệ thống phân cấp, điều này sẽ thú vị hơn.
SELECT A.Value+coalesce(B.Value,0) as Value
, A.Position
, A.Relates_to_Position
, A.Type
FROM Table A
LEFT JOIN Table B
on B.Relates_To_Position = A.Position
WHERE A. Relate_to_Position is null
Điều này thực hiện là một liên kết tự để nó đặt các bản ghi liên quan trên cùng một hàng. sau đó nó sẽ loại bỏ tất cả các bản ghi có giá trị trong rel_to_position vì chúng sẽ được thêm vào hàng mẹ.
chúng tôi sử dụng phép nối TRÁI vì không phải tất cả các bản ghi đều có giá trị liên quan và chúng tôi sử dụng phép liên kết để đảm bảo không cố gắng thêm null. (liên kết lấy giá trị khác rỗng đầu tiên)
Không chắc tại sao bạn cần trả lại relates_To_Position vì nó sẽ LUÔN LUÔN là giá trị rỗng ..