Debe usar GROUP BY
como tal para obtener el resultado deseado:
SELECT
order_id,
part_id,
SUM(cost) AS total
FROM orders
WHERE order_date BETWEEN xxx AND yyy
GROUP BY order_id, part_id
Esto agrupará sus resultados. Tenga en cuenta que dado que asumo que order_id
y part_id
es un PK compuesto, SUM(cost)
en el anterior probablemente será = cost
(ya que usted es una agrupación por una combinación de dos campos que está garantizado que es único. La subconsulta correlacionada a continuación superará esta limitación).
Cualquier fila no agregada recuperada debe especificarse en GROUP BY
fila.
Para más información, puedes leer un tutorial sobre GROUP BY
aquí:
EDITAR: Si desea usar una columna como agregada y no agregada, o si necesita desagregar sus grupos, deberá usar una subconsulta como tal:
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