SQL Fiddle:
CREATE TABLE Purchasing (
Event_Type VARCHAR(255),
Campaign VARCHAR(255),
Quantity_Offer VARCHAR(255),
Quantity_
Use this for your query.
this is based you first make your offer, then comes tghe order and at last comes the received, when 1 of them in that order is empty, then 1 prior must be the current state.
SELECT
Campaign,
IF(QReceived IS NOT NULL, "Received",
IF(QOrder IS NOT NULL, "Order",
IF(QOffer IS NOT NULL, "Offer", NULL))) Event_Type,
IF(QReceived IS NOT NULL, QReceived,
IF(QOrder IS NOT NULL, QOrder,
IF(QOffer IS NOT NULL, QOffer, NULL))) qty
FROM
(SELECT
Campaign,
SUM(Quantity_Received) QReceived,
SUM(Quantity_Order) QOrder,
SUM(Quantity_Offer) QOffer
FROm Purchasing
GROUP BY Campaign) t1
Which gives you foolowing result
Campaign Event_Type qty
C001 Received 310
C002 Received 190
C003 Order 450
C004 Order 630
C005 Offer 400
C006 Offer 300
http://www.sqlfiddle.com/#!9/2b9394/34