Musíte použít GROUP BY
jako takový, abyste dosáhli požadovaného výsledku:
SELECT
order_id,
part_id,
SUM(cost) AS total
FROM orders
WHERE order_date BETWEEN xxx AND yyy
GROUP BY order_id, part_id
Tím se vaše výsledky seskupí. Všimněte si, že protože předpokládám, že order_id a part_id je složený PK, SUM(cost) ve výše uvedeném bude pravděpodobně = cost (protože seskupujete kombinací dvou polí, u kterých je zaručeno, že jsou jedinečné. Korelovaný poddotaz níže toto omezení překoná).
Všechny načítané neagregované řádky musí být specifikovány v GROUP BY řádek.
Pro více informací si můžete přečíst tutoriál o GROUP BY zde:
UPRAVIT: Pokud chcete použít sloupec jako agregovaný i neagregovaný, nebo pokud potřebujete desegregovat své skupiny, budete muset použít poddotaz jako takový:
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