Hmoner,
OK,
Back to basics.
You need to split the code I gave you down to its component parts.
First try this section
SELECT
C.NAME AS CLIENT,
SUM(INVOICE.POINTS) - SUM(EXCHANGE.TOTALPOINTS) AS ACTUAL_POINTS,
0 AS NORMAL_AMMOUNT,
SUM(I.AMMOUNT) AS SPECIAL_AMMOUNT,
SUM(I.AMMOUNT) AS TOTAL_AMMOUNT,
0 AS NORMAL_POINTS,
SUM(INVOICE.POINTS) AS SPECIAL_POINTS,
SUM(INVOICE.POINTS) AS TOTAL_POINTS,
SUM(EXCHANGE.TOTALPOINTS) AS EXCHANGED_POINTS
FROM CLIENT C,
INVOICE I,
EXCHANGE E
WHERE C.ID = I.IDCLIENT
AND I.IS_SPECIAL_PROMO = TRUE
AND C.ID = E.IDCLIENT
AND C.IDPROMO = 1
This is the special points ammount code.
Does this do what you expect?
If it does then try then next bit, the normal points section
SELECT
C.NAME AS CLIENT,
SUM(INVOICE.POINTS) - SUM(EXCHANGE.TOTALPOINTS) AS ACTUAL_POINTS,
SUM(INVOICE.AMMOUNT) AS NORMAL_AMMOUNT,
0 AS SPECIAL_AMMOUNT,
SUM(I.AMMOUNT) AS TOTAL_AMMOUNT,
SUM(I.POINTS) AS NORMAL_POINTS,
0 AS SPECIAL_POINTS,
SUM(INVOICE.POINTS) AS TOTAL_POINTS,
SUM(EXCHANGE.TOTALPOINTS) AS EXCHANGED_POINTS
FROM CLIENT C,
INVOICE I,
EXCHANGE E
WHERE C.ID = I.IDCLIENT
AND I.IS_SPECIAL_PROMO = FALSE
AND C.ID = E.IDCLIENT
AND C.IDPROMO = 1
if this works as you expect then put the two together with a UNION ALL. Does this work OK?
SELECT
C.NAME AS CLIENT,
SUM(INVOICE.POINTS) - SUM(EXCHANGE.TOTALPOINTS) AS ACTUAL_POINTS,
0 AS NORMAL_AMMOUNT,
SUM(I.AMMOUNT) AS SPECIAL_AMMOUNT,
SUM(I.AMMOUNT) AS TOTAL_AMMOUNT,
0 AS NORMAL_POINTS,
SUM(INVOICE.POINTS) AS SPECIAL_POINTS,
SUM(INVOICE.POINTS) AS TOTAL_POINTS,
SUM(EXCHANGE.TOTALPOINTS) AS EXCHANGED_POINTS
FROM CLIENT C,
INVOICE I,
EXCHANGE E
WHERE C.ID = I.IDCLIENT
AND I.IS_SPECIAL_PROMO = TRUE
AND C.ID = E.IDCLIENT
AND C.IDPROMO = 1
-- I replace "1" by

ARAM_ID_NORMALPROMOTION
UNION ALL
SELECT
C.NAME AS CLIENT,
SUM(INVOICE.POINTS) - SUM(EXCHANGE.TOTALPOINTS) AS ACTUAL_POINTS,
SUM(INVOICE.AMMOUNT) AS NORMAL_AMMOUNT,
0 AS SPECIAL_AMMOUNT,
SUM(I.AMMOUNT) AS TOTAL_AMMOUNT,
SUM(I.POINTS) AS NORMAL_POINTS,
0 AS SPECIAL_POINTS,
SUM(INVOICE.POINTS) AS TOTAL_POINTS,
SUM(EXCHANGE.TOTALPOINTS) AS EXCHANGED_POINTS
FROM CLIENT C,
INVOICE I,
EXCHANGE E
WHERE C.ID = I.IDCLIENT
AND I.IS_SPECIAL_PROMO = FALSE
AND C.ID = E.IDCLIENT
AND C.IDPROMO = 1
Does this give the expected lines for each section? note that they grouping and summing isn't implemented in this bit.
When you are satisfied that you know what you have got and wheather its right or not then let me know anf I'll do the last bit.
TTFN
PCLFW