par
laurentdoh » 08 févr. 2023, 13:19
Pour mieux expliquer le soucis que je rencontre,
INSERT INTO `chiffre` (`date`, `montant`) VALUES
('2022-01-01', 500000),
('2022-01-01', 40000),
('2022-01-01', 30000),
('2022-01-02', 200000),
('2022-01-03', 300000),
('2022-01-04', 400000),
('2023-01-01', 40000),
('2023-01-02', 600000),
('2023-01-03', 150000),
('2023-01-04', 300000);
la requête:
SELECT c1.date AS "ANNEE 2022", sum(c1.montant) as "CA_2022", c2.date AS "ANNEE 2023", sum(c2.montant) as "CA_2023"
FROM chiffre c1
LEFT JOIN chiffre c2 ON DAY(c1.date) = DAY(c2.date) AND MONTH(c1.date) = MONTH(c2.date) AND YEAR(c2.date) = YEAR(c1.date) + 1
WHERE YEAR(c1.date) = 2022
GROUP BY c1.date,c2.date
et vois le résultat :
Pour l'année 2022, c'est ok, mais pour l'année 2023, : date du 01/01/2023 la requête fais 40000*3 au lieu de donner une seul fois 40000
Pour mieux expliquer le soucis que je rencontre,
INSERT INTO `chiffre` (`date`, `montant`) VALUES
('2022-01-01', 500000),
('2022-01-01', 40000),
('2022-01-01', 30000),
('2022-01-02', 200000),
('2022-01-03', 300000),
('2022-01-04', 400000),
('2023-01-01', 40000),
('2023-01-02', 600000),
('2023-01-03', 150000),
('2023-01-04', 300000);
la requête:
SELECT c1.date AS "ANNEE 2022", sum(c1.montant) as "CA_2022", c2.date AS "ANNEE 2023", sum(c2.montant) as "CA_2023"
FROM chiffre c1
LEFT JOIN chiffre c2 ON DAY(c1.date) = DAY(c2.date) AND MONTH(c1.date) = MONTH(c2.date) AND YEAR(c2.date) = YEAR(c1.date) + 1
WHERE YEAR(c1.date) = 2022
GROUP BY c1.date,c2.date
et vois le résultat :
Pour l'année 2022, c'est ok, mais pour l'année 2023, : date du 01/01/2023 la requête fais 40000*3 au lieu de donner une seul fois 40000