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 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| CREATE TABLE TbDepense
(
MOIS CHAR(2),
IDDepense INT,
Montant INT,
Code CHAR(2)
)
GO
INSERT INTO dbo.TbDepense VALUES ('01', 11111, 10, '01')
INSERT INTO dbo.TbDepense VALUES ('02', 12121, 10, '01')
INSERT INTO dbo.TbDepense VALUES ('02', 22222, 85, '75')
INSERT INTO dbo.TbDepense VALUES ('03', 22222, 13, '15')
INSERT INTO dbo.TbDepense VALUES ('05', 22222, 60, '76')
GO
-- Au mois de mars
WITH
MONTANTS AS
(
SELECT IDDepense, CAST(MOIS AS INT) Mois, SUM(Montant) MontantTotal
FROM dbo.TbDepense
WHERE CAST(MOIS AS INT) <= 3
GROUP BY IDDepense, CAST(MOIS AS INT)
),
REGU AS
(
SELECT IDDepense, MAX(CAST(MOIS AS INT)) MoisRegu
FROM dbo.TbDepense
WHERE CAST(MOIS AS INT) <= 3
GROUP BY IDDepense
)
SELECT MONTANTS.IDDepense,
MONTANTS.MontantTotal
FROM MONTANTS
JOIN REGU
ON REGU.IDDepense = MONTANTS.IDDepense
AND REGU.MoisRegu = MONTANTS.Mois
-- Au mois de mai
;WITH
MONTANTS AS
(
SELECT IDDepense, CAST(MOIS AS INT) Mois, SUM(Montant) MontantTotal
FROM dbo.TbDepense
WHERE CAST(MOIS AS INT) <= 5
GROUP BY IDDepense, CAST(MOIS AS INT)
),
REGU AS
(
SELECT IDDepense, MAX(CAST(MOIS AS INT)) MoisRegu
FROM dbo.TbDepense
WHERE CAST(MOIS AS INT) <= 5
GROUP BY IDDepense
)
SELECT MONTANTS.IDDepense,
MONTANTS.MontantTotal
FROM MONTANTS
JOIN REGU
ON REGU.IDDepense = MONTANTS.IDDepense
AND REGU.MoisRegu = MONTANTS.Mois |
Partager