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 :
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.
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)
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.
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).
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')
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]
Partager