Du måste använda GROUP BY
som sådan för att få önskat resultat:
SELECT
order_id,
part_id,
SUM(cost) AS total
FROM orders
WHERE order_date BETWEEN xxx AND yyy
GROUP BY order_id, part_id
Detta kommer att gruppera dina resultat. Observera att eftersom jag antar att order_id
och part_id
är en sammansatt PK, SUM(cost)
i ovanstående kommer förmodligen att vara = cost
(eftersom du en gruppering av en kombination av två fält som garanterat är unik. Den korrelerade underfrågan nedan kommer att övervinna denna begränsning).
Alla rader som inte är samlade måste anges i GROUP BY
rad.
För mer information kan du läsa en handledning om GROUP BY
här:
EDIT: Om du vill använda en kolumn som både aggregerad och icke-aggregerad, eller om du behöver desegregera dina grupper, måste du använda en underfråga som sådan:
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