Bonjour à tous,

Je travaille sur SQL Server 2000 ....

Je suis confronté à un dilemne assez important, j'ai une table disont d'adhérent et une table regroupant l'historique des différentes adhésion de ces adhérents :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 CREATE TABLE ADHERENT (no_adherent varchar(15))
 
CREATE TABLE HISTO_ADH (no_adherent varchar(15),
date_debut datetime,date_fin datetime)
Le n° d'adhérent est clef primaire de la première, clef etrangère ds la seconde alors que la clef primaire de la seconde est n° adherent,date_debut. Voilà pour le cadre résumé de la base de données.

L'objectif est une restitution statistique, qui nécessite la pondération d'un résultat par un calcul extrémement savant à savoir qu'un adhérent compte de manière proportionelle à son nombre de mois de présence dans l'année sur laquelle s'effectue le calcul.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 INSERT INTO ADHERENT VALUES('111111111111111')
INSERT INTO ADHERENT VALUES('2222222222222222')
INSERT INTO ADHERENT VALUES('3333333333333333')
INSERT INTO ADHERENT VALUES('444444444444444')
 
INSERT INTO HISTO_ADH VALUES('111111111111111','01/01/2000';'09/06/2000')
INSERT INTO HISTO_ADH VALUES('111111111111111','01/11/2000';'31/12/2099')
INSERT INTO HISTO_ADH VALUES('222222222222222','01/01/2000';'31/12/2099')
INSERT INTO HISTO_ADH VALUES('333333333333333','01/01/2000';'01/01/2001')
INSERT INTO HISTO_ADH VALUES('444444444444444','01/01/2000';'01/01/2001')
INSERT INTO HISTO_ADH VALUES('444444444444444','01/09/2001';'31/12/2099')
Cette donnée sera ssez fréquemment requêtée et par conséquent il me semble opportun de la stockée dans un table que l'on pourrait appeler STATS_ADH, cette table n'existe pas mais sa structure pourrait être (no_adherent,année,valeur_du_calcul_en_question).

Le résultat que j'ai ds la tête ressemblerait à

no_adherent année nb mois presence
111111111111111|2000 |8 (6+2)
111111111111111|2001 |12
111111111111111|2002 |12
222222222222222|2000 |12
222222222222222|2001 |12
222222222222222|2002 |12
333333333333333|2000 |12
444444444444444|2000 |12
444444444444444|2001 |4
444444444444444|2002 |12

Cette solution est-elle la meilleure au niveau de la modélisation?
Comment coder ce calcul d'agrgéat pour qu'il s'éxécute tous les jours, je pensais à un lot DTS avec un script Active X et des curseurs mais cette fonctionnalmités n'a pas cet objectif .....
Je suppose qu'il faut en arriver à une procédure stockée? oui? non? comment faire?


Merci par avance pour toutes information,

Mat[/code][/quote]