Tôi có một bảng đơn giản với một số thiết lập dữ liệu giả như:T-SQL sử dụng SUM cho một chạy tổng
|id|user|value|
---------------
1 John 2
2 Ted 1
3 John 4
4 Ted 2
tôi có thể chọn một số hoạt động bằng cách thực hiện sql sau (MSSQL 2008) tuyên bố:
SELECT a.id, a.user, a.value, SUM(b.value) AS total
FROM table a INNER JOIN table b
ON a.id >= b.id
AND a.user = b.user
GROUP BY a.id, a.user, a.value
ORDER BY a.id
Điều này sẽ cho tôi kết quả như:
|id|user|value|total|
---------------------
1 John 2 2
3 John 4 6
2 Ted 1 1
4 Ted 2 3
Bây giờ là nó có thể chỉ lấy hàng gần đây nhất cho ea ch người dùng? Vì vậy, kết quả sẽ là:
|id|user|value|total|
---------------------
3 John 4 6
4 Ted 2 3
Tôi có làm đúng cách này không? bất kỳ đề xuất hoặc một con đường mới để làm theo sẽ là tuyệt vời!
Bạn chỉ quan tâm đến kết quả cuối cùng hay bạn cũng cần tổng số đang chạy? Bạn đang lưu trữ tổng số đang chạy ở đâu đó, hoặc bạn đang sử dụng nó Chỉ để tạo kết quả cuối cùng của bạn? * [Kết quả cuối cùng của bạn có thể được tạo hiệu quả hơn mà không cần sử dụng tổng số đang chạy. Tuy nhiên, nếu bạn đã có tổng số đang chạy được lưu trữ ở đâu đó, vì các lý do khác, nó có thể được sử dụng.] * – MatBailie
Bạn đã thay đổi câu trả lời được chấp nhận để cải thiện hiệu suất, nhưng bạn chưa trả lời truy vấn của tôi ở trên. Lưu ý rằng bạn có thể cải thiện hiệu suất bằng cách không *** bằng cách sử dụng phương pháp tổng chạy. Điều đó có được bạn quan tâm không, hoặc bạn có cần tất cả kết quả trong tổng số hoạt động * không? *? – MatBailie
Hi Dems, tôi đã bận rộn làm việc và bỏ lỡ bình luận của bạn. Tôi chỉ sau tổng số và người dùng có liên quan, vì vậy vâng tôi quan tâm đến hiệu suất được cải thiện. – luke2012