Трябва да използвате GROUP BY
като такъв, за да получите желания резултат:
SELECT
order_id,
part_id,
SUM(cost) AS total
FROM orders
WHERE order_date BETWEEN xxx AND yyy
GROUP BY order_id, part_id
Това ще групира вашите резултати. Имайте предвид, че тъй като предполагам, че order_id
и part_id
е съединение PK, SUM(cost)
в горното вероятно ще бъде = cost
(тъй като вие групиране по комбинация от две полета, което е гарантирано, че е уникално. Корелираната подзаявка по-долу ще преодолее това ограничение).
Всички извлечени неагрегирани редове трябва да бъдат посочени в GROUP BY
ред.
За повече информация можете да прочетете урок за GROUP BY
тук:
РЕДАКТИРАНЕ: Ако искате да използвате колона както като обобщена, така и като неагрегирана или ако трябва да десегрегирате групите си, ще трябва да използвате подзаявка като такава:
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