SELECT DISTINCT designation, reference, count( CASE WHEN EXTRACT(MONTH FROM date_sortie) = 1 THEN 1 END ), count( CASE WHEN EXTRACT(MONTH FROM date_sortie) = 2 THEN 2 END ), count( CASE WHEN EXTRACT(MONTH FROM date_sortie) = 3 THEN 3 END ), count( CASE WHEN EXTRACT(MONTH FROM date_sortie) = 4 THEN 4 END ), count( CASE WHEN EXTRACT(MONTH FROM date_sortie) = 5 THEN 5 END ), count( CASE WHEN EXTRACT(MONTH FROM date_sortie) = 6 THEN 6 END ), count( CASE WHEN EXTRACT(MONTH FROM date_sortie) = 7 THEN 7 END ), count( CASE WHEN EXTRACT(MONTH FROM date_sortie) = 8 THEN 8 END ), count( CASE WHEN EXTRACT(MONTH FROM date_sortie) = 9 THEN 9 END ), count( CASE WHEN EXTRACT(MONTH FROM date_sortie) = 10 THEN 10 END ), count( CASE WHEN EXTRACT(MONTH FROM date_sortie) = 11 THEN 11 END ), count( CASE WHEN EXTRACT(MONTH FROM date_sortie) = 12 THEN 12 END ), count(sort.quantite), count(stock.quantite) FROM magasin.sortie AS sort, magasin.produits AS prod, magasin.stock AS stock WHERE sort.num_produit = prod.num_produit AND stock.num_produit = prod.num_produit AND DATE_SORTIE > date_trunc('month', current_date) - interval '1 year' AND DATE_SORTIE < date_trunc('month', current_date) GROUP BY designation, reference