Nombre cumulé

Un exemple suggéré par une question sur un forum : Comment obtenir un nombre cumulé d'abonnements par mois, en se basant sur un id unique d'abonnements :

CREATE TABLE #abonnement (AbonnementId int primary key, dateAbo smalldatetime)
 
INSERT INTO #abonnement (AbonnementId, dateAbo) VALUES (1, '20060401')
INSERT INTO #abonnement (AbonnementId, dateAbo) VALUES (10,'20060410')
INSERT INTO #abonnement (AbonnementId, dateAbo) VALUES (6, '20060521')
INSERT INTO #abonnement (AbonnementId, dateAbo) VALUES (4, '20060601')
INSERT INTO #abonnement (AbonnementId, dateAbo) VALUES (7, '20060611')
INSERT INTO #abonnement (AbonnementId, dateAbo) VALUES (2, '20060612')
GO
 
SELECT	YEAR(a1.dateAbo) AS Annee,  
	MONTH(a1.dateAbo) AS Mois, 
	COUNT(DISTINCT a2.AbonnementId) AS NombreCumule
FROM	#abonnement a1
JOIN	#abonnement a2 ON 
		CONVERT(char(6), a1.dateAbo, 112) >= 
		CONVERT(char(6), a2.dateAbo, 112)
GROUP BY YEAR(a1.dateAbo), MONTH(a1.dateAbo)
ORDER BY YEAR(a1.dateAbo), MONTH(a1.dateAbo)
GO
 
DROP TABLE #abonnement
 
sql_server/snippets/avance.txt · Dernière modification: 2006/08/03 18:30 (édition externe)