Du skal bruge GROUP BY
som sådan for at få dit ønskede 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
Dette vil gruppere dine resultater. Bemærk, at da jeg antager, at order_id
og part_id
er en sammensat PK, SUM(cost)
i ovenstående vil sandsynligvis være = cost
(da du en gruppering af en kombination af to felter, som er garanteret at være unik. Den korrelerede underforespørgsel nedenfor vil overvinde denne begrænsning).
Alle ikke-samlede rækker, der hentes, skal angives i GROUP BY
række.
For mere information kan du læse en vejledning om GROUP BY
her:
EDIT: Hvis du vil bruge en kolonne som både aggregeret og ikke-aggregeret, eller hvis du skal desegregere dine grupper, skal du bruge en underforespørgsel 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