[résolu] Création d'agrégat avec SQLServer
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:
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:
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]