I think you can resolve this issue by addding a UNION with the value of your measure to 0 to your query and aggregating then the result of that UNION. Then you have all the combinations of your quarters, even if you have no data for them. Example for your query: SELECT C_DATE, c_TRIM, C_PRODUCTS, SUM(NB_VENTE) AS NB_VENTEFROM((SELECT SUBSTRING(RI_DATE_INSCRIPTION,1,4)) AS C_DATE, QUARTER(RI_DATE_INSCRIPTION) AS C_TRIM, C_PRODUCTS, COUNT(C_ID) AS NB_VENTE FROM CARNET GROUP BY C_DATE, C_TRIM, C_PRODUCTS HAVING CATEGORY IS NOT NULL) UNION (SELECT SUBSTRING(RI_DATE_INSCRIPTION,1,4)) AS C_DATE, QUARTER(RI_DATE_INSCRIPTION) AS C_TRIM, C_PRODUCTS, 0 AS NB_VENTE FROM CARNET GROUP BY C_DATE, C_TRIM, C_PRODUCTS HAVING CATEGORY IS NOT NULL ) TUNION GROUP BY C_DATE, c_TRIM, C_PRODUCTSORDER BY D_RANDO ASC;