Précédent   Forum des professionnels en informatique > Bases de données > Sybase
Sybase Forum sur la base de données Sybase. Avant de poster -> F.A.Q Sybase, Tutoriels Sybase
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/03/2006, 16h24   #1
Invité de passage
 
Inscription : mars 2006
Messages : 12
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 12
Points : 2
Points : 2
Par défaut Sous totaux par catégorie d'une colonne

Bonjour,

voici une partie de ma proc ( je débute )

Code :
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
 
CREATE TABLE #TOTAL_EFFECTIF
	(
		CLI_ORIGINE		varchar(6),
	    	ANNEE			int,
	   	MOIS			int,
		TOT_CA			money,			TOT_CA_CUM		money,
		TOT_VOL			numeric(30,2),
		TOT_VOL_CUM		numeric(30,2),
		TOT_PMV			decimal(10,2),
		TOT_PMV_CUM		decimal(10,2)
	)
 
	INSERT INTO #TOTAL_EFFECTIF
	SELECT 
		CLI_ORIGINE,
	    	ANNEE,
	   	MOIS,
		sum(isnull(FAC_CA,0)),
		sum(isnull(FAC_CA_CUMULE,0)),
		sum(isnull(FAC_VOL,0)),
		sum(isnull(FAC_VOL_CUMULE,0)),
		sum(isnull(PMV,0)),
		sum(isnull(PMV_CUMUL,0))
	FROM MKT_005
	GROUP BY CLI_ORIGINE,ANNEE,MOIS
	UPDATE MKT_005
	SET 	
		A.POIDS_CA=100*A.FAC_CA/B.TOT_CA,
		A.POIDS_CA_CUMULE=100*A.FAC_CA_CUMULE/B.TOT_CA_CUM,
		A.POIDS_VOL=convert(numeric(30,2),100*convert(numeric(30,2),A.FAC_VOL)/convert(numeric(30,2),B.TOT_VOL)),
		A.POIDS_VOL_CUMULE=convert(numeric(30,2),100*convert(numeric(30,2),A.FAC_VOL_CUMULE)/convert(numeric(30,2),B.TOT_VOL_CUM)),
		A.POIDS_PMV=convert(decimal(10,2),100*convert(decimal(10,2),A.PMV)/convert(decimal(10,2),B.TOT_PMV)),
		A.POIDS_PMV_CUMUL=convert(decimal(10,2),100*convert(decimal(10,2),A.PMV_CUMUL)/convert(decimal(10,2),B.TOT_PMV_CUM))
	FROM 
		MKT_005 A, #TOTAL_EFFECTIF B
	WHERE
		A.CLI_ORIGINE=B.CLI_ORIGINE 
		AND A.ANNEE=B.ANNEE
		AND A.MOIS=B.MOIS
		AND A.FTP_CODE=B.FTP_CODE
		AND A.PSU_CODE=B.PSU_CODE
La partie qui pose problèmes :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
UPDATE MKT_005
	SET 	
		A.POIDS_CA=100*A.FAC_CA/B.TOT_CA,
		A.POIDS_CA_CUMULE=100*A.FAC_CA_CUMULE/B.TOT_CA_CUM,
		A.POIDS_VOL=convert(numeric(30,2),100*convert(numeric(30,2),A.FAC_VOL)/convert(numeric(30,2),B.TOT_VOL)),
		A.POIDS_VOL_CUMULE=convert(numeric(30,2),100*convert(numeric(30,2),A.FAC_VOL_CUMULE)/convert(numeric(30,2),B.TOT_VOL_CUM)),
		A.POIDS_PMV=convert(decimal(10,2),100*convert(decimal(10,2),A.PMV)/convert(decimal(10,2),B.TOT_PMV)),
		A.POIDS_PMV_CUMUL=convert(decimal(10,2),100*convert(decimal(10,2),A.PMV_CUMUL)/convert(decimal(10,2),B.TOT_PMV_CUM))
	FROM 
		MKT_005 A, #TOTAL_EFFECTIF B
	WHERE
		A.CLI_ORIGINE=B.CLI_ORIGINE 
		AND A.ANNEE=B.ANNEE
		AND A.MOIS=B.MOIS
		AND A.FTP_CODE=B.FTP_CODE
		AND A.PSU_CODE=B.PSU_CODE
Au niveau des lignes de calcul comme la suivante :

Code :
A.POIDS_CA=100*A.FAC_CA/B.TOT_CA,
En fait ma table MKT_005 contient 2 niveaux de regroupement :
FTP_CODE
PSU_CODE

Et en fait je voudrais le pourcentage de chaque PSU_CODE par rapport au total de chaque code.

Si j'ai pas été clair

FTP_CODE1
PSU_CODE11
PSU_CODE12
PSU_CODE13
PSU_CODE14
FTP_CODE2
PSU_CODE21
PSU_CODE22
PSU_CODE23
PSU_CODE24

Et je voudrais calculer dans une procédure le % pour chaque PSU_CODE par rapport au total de son FTP_CODE.
Benjamin78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2006, 18h53   #2
Xo
Expert Confirmé
 
Avatar de Xo
 
Inscription : janvier 2005
Messages : 2 701
Détails du profil
Informations personnelles :
Âge : 38

Informations forums :
Inscription : janvier 2005
Messages : 2 701
Points : 3 237
Points : 3 237
Envoyer un message via Skype™ à Xo
Merci de lire les Conseils à lire avant de poster, et de préciser votre SGBD.

En particulier, il faut savoir que ce forum traite de syntaxe SQL, et pas des nombreux langages procéduraux qui sont spécifiques à chaque SGBD.
__________________
"Ce que l'on conçoit bien s'énonce clairement,
Et les mots pour le dire arrivent aisément." Nicolas Boileau

"Expliquer empêche de comprendre si cela dispense de chercher"

Quiz Oracle : venez tester vos connaissances !

La FAQ Oracle : 138 réponses à vos questions
Aidez-nous à la compléter
Xo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/03/2006, 09h35   #3
Invité de passage
 
Inscription : mars 2006
Messages : 12
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 12
Points : 2
Points : 2
Alors si c'est possible de déplacer mon poste dans la section SYBASE.

Merci
Benjamin78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h11.


 
 
 
 
Partenaires

Hébergement Web