Devi usare GROUP BY
come tale per ottenere il risultato desiderato:
SELECT
order_id,
part_id,
SUM(cost) AS total
FROM orders
WHERE order_date BETWEEN xxx AND yyy
GROUP BY order_id, part_id
Questo raggrupperà i tuoi risultati. Nota che poiché presumo che order_id
e part_id
è un PK composto, SUM(cost)
in quanto sopra sarà probabilmente = cost
(poiché un raggruppamento in base a una combinazione di due campi che è garantito essere unico. La sottoquery correlata di seguito supererà questa limitazione).
Eventuali righe non aggregate recuperate devono essere specificate in GROUP BY
riga.
Per ulteriori informazioni, puoi leggere un tutorial su GROUP BY
qui:
MODIFICA: Se desideri utilizzare una colonna sia come aggregata che non aggregata, o se devi desegregare i tuoi gruppi, dovrai utilizzare una sottoquery in quanto tale:
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