|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Nouveau Membre du Club
![]() Inscription : avril 2005 Messages : 64 ![]() |
Bonjour,
J'ai une table SAS qui a cette tête là : A B D F 1 A B D G 2 A B E F 3 A B E G 4 A C D F 5 A C D G 6 A C E F 7 A C E G 8 Les 4 premières colonnes sont des identifiants, et la cinquième une valeur quelconque. Ce que je voudrais faire, c'est de calculer à partir de cette table les différentes agrégations selon les 3 premières colonnes (et non les 4 premières) Ainsi, je voudrais calculer la somme de la cinquième colonne en groupant sur la première colonne, et en gardant la quatrième, ce qui me donnerait : A F 16 A G 20 de même, sur la troisième : B F 4 B G 6 C F 12 C G 14 Je voudrais avoir le résultat sur une table unique, ce qui jusque là ne me pose pas problème, car je calcule les différentes agrégations et je concatène les tables de sortie en une seule. Mais je voudrais avoir une table de sortie exactement dans cet ordre : A F 16 A G 20 B F 4 B G 6 D F 1 D G 2 E F 3 E G 4 C F 12 C G 14 D F 5 D G 6 E F 7 E F 8 Avec en rouge le plus haut niveau, puis en vert le deuxième niveau mais immédiatement après les valeurs du niveau inférieur. Merci de votre aide |
|
|
00
|
|
|
#2 | ||
![]() ![]() Inscription : septembre 2006 Messages : 1 973 ![]() |
Bonjour,
Avec du SQL tu peux utiliser les instructions group by et sum pour réaliser ce genre de manipulation. Le group by te permettra de grouper selon tes colonnes voulu : A F 16 A G 20 Pour ce cas tu aura group by col1, col4 Et ensuite tu somme(sum) sur ta cinquième variabel. En SAS ça te donner quelque chose comme ça : Code :
|
||
|
|
00
|
|
|
#3 |
|
Nouveau Membre du Club
![]() Inscription : avril 2005 Messages : 64 ![]() |
Oui mais cette partie ne me pose pas problème, ce qui me pose problème, c'est l'ordre des données dans la table de sortie qui doit être celui que j'ai précisé
|
|
|
00
|
|
|
#4 |
![]() ![]() Inscription : septembre 2006 Messages : 1 973 ![]() |
Bonjour,
Quelle est la logique de ta table de sortie? Fafabzh |
|
|
00
|
|
|
#5 |
|
Nouveau Membre du Club
![]() Inscription : avril 2005 Messages : 64 ![]() |
Bonjour,
Ma table de sortie me sert pour créer un tableau croisé et il faut que dans ce tableau les données de la colonne 1 apparaissent dans cet ordre précis. |
|
|
00
|
|
|
#6 |
|
Membre confirmé
![]() Inscription : avril 2008 Messages : 233 ![]() |
Et bah c'est ça la question de fafabzh6 : quel est la logique de cet ordre précis ? D'abord le premier regroupement (1 et 4), ensuite le deuxième (2 et 4), etc ? Par l'ordre des données résultat ? Autre chose ?
|
|
|
00
|
|
|
#7 |
|
Nouveau Membre du Club
![]() Inscription : avril 2005 Messages : 64 ![]() |
Bonjour,
Le but de ma table de sortie est d'avoir la hiérarchie initiale éclatée sur une seule colonne. donc en début de table on aurait le regroupement sur le plus haut niveau, ensuite, on aurait le regroupement sur le premier niveau inférieur, et pour ce niveau inférieur, on aurait tout de suite après les valeurs du niveau inférieur, etc.. Ce serait en quelque sorte une arborescence. Ma table de sortie est peut-être plus clair présenté ainsi : - A F 16 - A G 20 ---- B F 4 ---- B G 6 -------- D F 1 -------- D G 2 -------- E F 3 -------- E G 4 ---- C F 12 ---- C G 14 -------- D F 5 -------- D G 6 -------- E F 7 -------- E F 8 Si le plus haut niveau vaut 1, ensuite on a deux sous niveaux : 2 et 3, pour le sous niveau 2 on a les sous-niveaux 4 et 5, et pour le sous niveau 3 les sous-niveaux 6 et 7. L'ordre que je voudrais est : 1 2 4 5 3 6 7 J'espère avoir été clair. |
|
|
00
|
|
|
#8 | ||
|
Nouveau Membre du Club
![]() Inscription : avril 2005 Messages : 64 ![]() |
Finalement l'une des solutions était :
Code :
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com