1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| CREATE TABLE TbDepense
(
MOIS CHAR(2),
IDDepense INT,
Montant INT,
Code CHAR(2)
)
GO
INSERT INTO TbDepense VALUES ('01', 11111, 10, '01')
INSERT INTO TbDepense VALUES ('02', 12121, 10, '01')
INSERT INTO TbDepense VALUES ('02', 22222, 85, '75')
INSERT INTO TbDepense VALUES ('05', 22222, 60, '76')
GO
-- Au mois de Février
;WITH
CTE_DERNIERE_DEPENSE AS
(
SELECT IDDepense, MAX(CAST(MOIS AS INT)) Mois
FROM dbo.TbDepense
WHERE CAST(MOIS AS INT) <= 2
GROUP BY IDDepense
)
SELECT D.IDDepense, SUM(Montant) Montant
FROM dbo.TbDepense D
JOIN CTE_DERNIERE_DEPENSE C
ON C.IDDepense = D.IDDepense
AND C.Mois = CAST(D.MOIS AS INT)
GROUP BY D.IDDepense
-- Au mois de Mai
;WITH
CTE_DERNIERE_DEPENSE AS
(
SELECT IDDepense, MAX(CAST(MOIS AS INT)) Mois
FROM dbo.TbDepense
WHERE CAST(MOIS AS INT) <= 5
GROUP BY IDDepense
)
SELECT D.IDDepense, SUM(Montant) Montant
FROM dbo.TbDepense D
JOIN CTE_DERNIERE_DEPENSE C
ON C.IDDepense = D.IDDepense
AND C.Mois = CAST(D.MOIS AS INT)
GROUP BY D.IDDepense |
Partager