Anda perlu menggunakan GROUP BY
dengan demikian untuk mendapatkan hasil yang Anda inginkan:
SELECT
order_id,
part_id,
SUM(cost) AS total
FROM orders
WHERE order_date BETWEEN xxx AND yyy
GROUP BY order_id, part_id
Ini akan mengelompokkan hasil Anda. Perhatikan bahwa karena saya berasumsi bahwa order_id
dan part_id
adalah PK majemuk, SUM(cost)
di atas mungkin = cost
(karena Anda mengelompokkan dengan kombinasi dua bidang yang dijamin unik. Subquery terkait di bawah ini akan mengatasi batasan ini).
Setiap baris non-agregat yang diambil harus ditentukan di GROUP BY
baris.
Untuk informasi lebih lanjut, Anda dapat membaca tutorial tentang GROUP BY
di sini:
EDIT: Jika Anda ingin menggunakan kolom sebagai agregat dan non-agregat, atau jika Anda perlu memisahkan grup, Anda perlu menggunakan subkueri seperti:
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