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