CREATE CURSOR cTest (Product1 C(10), Colour C(15), Qty I) INSERT INTO cTest VALUES ([JKT001],[Black],20) INSERT INTO cTest VALUES ([JKT001],[MS - YO(BLACK)],20) INSERT INTO cTest VALUES ([JKT001],[Blue],10) INSERT INTO cTest VALUES ([JKT001],[MS - BL(BLUE)],20) INSERT INTO cTest VALUES ([JKT002],[Beige],10) INSERT INTO cTest VALUES ([JKT002],[MS - BE(BEIGE)],15) INSERT INTO cTest VALUES ([JKT003],[Beige],10) SELECT Product1, SUM(Qty) AS Qty, Colour; FROM cTest; WHERE LEFT(Colour,2) # [MS]; GROUP BY Product1, Colour; INTO CURSOR cTest1 SELECT Product1, SUM(Qty) AS Qty, Colour; FROM cTest; WHERE LEFT(Colour,2) == [MS]; GROUP BY Product1, Colour; INTO CURSOR cTest2 SELECT cTest1.Product1, (NVL(cTest2.Qty,0)-cTest1.Qty) AS Variance; FROM cTest1; LEFT JOIN cTest2 ON cTest1.Product1 == cTest2.Product1 AND [(]+UPPER(ALLTRIM(cTest1.Colour))+[)] $ cTest2.Colour; HAVING Variance # 0; INTO CURSOR cTest3 BROWI don't know what to do when you didn't have a System color.