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