Bạn cần sử dụng GROUP BY
như vậy để có được kết quả mong muốn của bạn:
SELECT
order_id,
part_id,
SUM(cost) AS total
FROM orders
WHERE order_date BETWEEN xxx AND yyy
GROUP BY order_id, part_id
Điều này sẽ nhóm kết quả của bạn. Lưu ý rằng vì tôi giả sử rằng order_id
và part_id
là một PK ghép, SUM(cost)
trong phần trên có thể sẽ là = cost
(vì bạn nhóm theo sự kết hợp của hai trường được đảm bảo là duy nhất. Truy vấn con tương quan bên dưới sẽ khắc phục hạn chế này).
Mọi hàng không tổng hợp được tìm nạp cần phải được chỉ định trong GROUP BY
hàng.
Để biết thêm thông tin, bạn có thể đọc hướng dẫn về GROUP BY
tại đây:
CHỈNH SỬA: Nếu bạn muốn sử dụng một cột vừa tổng hợp vừa không tổng hợp hoặc nếu bạn cần tách các nhóm của mình, bạn sẽ cần sử dụng một truy vấn con như sau:
SELECT
or1.order_id,
or1.cost,
or1.part_id,
(
SELECT SUM(cost)
FROM orders or2
WHERE or1.order_id = or2.order_id
GROUP BY or2.order_id
) AS total
FROM orders or1
WHERE or1.order_date BETWEEN xxx AND yyy