Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > Cognos
Cognos Forum d'entraide Cognos : Impromptu, Powerplay, transformer,...
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 27/05/2011, 10h36   #1
Invité régulier
 
ben kab
Inscription : octobre 2010
Messages : 54
Détails du profil
Informations personnelles :
Nom : ben kab

Informations forums :
Inscription : octobre 2010
Messages : 54
Points : 9
Points : 9
Par défaut Comment gérer la clause case

Bonjour,

J'ai un problème avec la syntaxe du case

Est-ce que je pourrais mettre
Code :
1
2
3
4
case(Cond1,Cond2)
When Cond1 AND Cond2 then (  ) else(   )
' après une série de when que sur la Cond1
end
Merci d'avance de votre aide
demido est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2011, 18h48   #2
Membre habitué
 
Inscription : août 2007
Messages : 132
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 132
Points : 142
Points : 142
J'avoue que j'ai pas bien compris la question.
Mais, je crois que la vraie syntaxe du CASE WHEN, c'est :

Code :
1
2
3
4
5
6
CASE
WHEN (condition1) THEN (Action1)
WHEN (condition2) THEN (Action2)
...
ELSE (autreaction)
END
xoninkara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2011, 09h32   #3
Membre habitué
 
Avatar de tfc3146
 
Homme Robert Labrousse
Développeur décisionnel
Inscription : février 2009
Messages : 79
Détails du profil
Informations personnelles :
Nom : Homme Robert Labrousse
Localisation : France

Informations professionnelles :
Activité : Développeur décisionnel
Secteur : Boutique - Magasin

Informations forums :
Inscription : février 2009
Messages : 79
Points : 134
Points : 134
Si j'ai bien compris, ce que tu veux écrire c'est çà non :

Code :
1
2
3
4
5
6
CASE
WHEN Cond1 AND Cond2 THEN ...
WHEN Cond1 THEN ...
...
ELSE
END
tfc3146 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2011, 11h23   #4
Invité régulier
 
ben kab
Inscription : octobre 2010
Messages : 54
Détails du profil
Informations personnelles :
Nom : ben kab

Informations forums :
Inscription : octobre 2010
Messages : 54
Points : 9
Points : 9
Par défaut La Clause Where

Bonjour,

Tout d'abord je vous remercie pour vos réponses.

Ce que je voulais dire déja est-ce que je peux mettre:

Code :
1
2
Case (Champs1, Champs2)
When ...
J'ai un tableau je veux faire le case qui porte sur deux colonnes par exemple

Par avance Merci
demido est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2011, 11h41   #5
Membre habitué
 
Avatar de tfc3146
 
Homme Robert Labrousse
Développeur décisionnel
Inscription : février 2009
Messages : 79
Détails du profil
Informations personnelles :
Nom : Homme Robert Labrousse
Localisation : France

Informations professionnelles :
Activité : Développeur décisionnel
Secteur : Boutique - Magasin

Informations forums :
Inscription : février 2009
Messages : 79
Points : 134
Points : 134
Tu ne dois pas mettre après ton CASE (Champ1,Champ2), ce n'est pas la syntaxe.

Par contre je ne vois pas quel est ton problème.
Si t'as condition porte sur deux colonnes, rien ne t'empêche d'écrire :

Code :
1
2
3
CASE
WHEN Champ1 opérateur valeur(s) AND Champ2 opérateur valeur(s) THEN ...
END
tfc3146 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2011, 14h49   #6
Invité régulier
 
ben kab
Inscription : octobre 2010
Messages : 54
Détails du profil
Informations personnelles :
Nom : ben kab

Informations forums :
Inscription : octobre 2010
Messages : 54
Points : 9
Points : 9
Par défaut La Clause Case

Merci tfc3146,je vais le tester.

Par contre je veux faire une mise enforme d'un rapport ou j'ai la première colonne qui est groupée (Pays)

Je veux qu'à chaque changement de pays, il m e trace une ligne.

Merci d'avance
demido est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2011, 15h42   #7
Membre Expert
 
Avatar de Sunchaser
 
Homme Vincent
OPNI
Inscription : décembre 2004
Messages : 1 668
Détails du profil
Informations personnelles :
Nom : Homme Vincent
Âge : 41
Localisation : France, Manche (Basse Normandie)

Informations professionnelles :
Activité : OPNI
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : décembre 2004
Messages : 1 668
Points : 2 036
Points : 2 036
Bonjour,

Imaginons que tu as une liste avec en première colonne les pays et en seconde les villes de ces pays, avec le grouping sur les pays.
L'idée de base est d'avoir dans le SQL un rank() sur les villes, groupées par pays, ce qui donnerait:
Code :
1
2
 
RANK()OVER(PARTITION BY mes_pays ORDER BY mes_villes) mon_rank
Ensuite tu utilises ce champs, "mon_rank", pour une variable Boolean qui teste:
Tu utilises cette variable sur chaque colonnes de la liste (ListColumn body), et tu appliques le fomattage si la valeur de la variable est TRUE -> border-top: 1px.
(perso, dans ce cas, je mets mes bordures horizontales par défaut a 0.25px)

Attention toute fois a la manière dont tu as besoin d'ordonner le tableau: en fonction du sorting appliqué dans la liste, il te faudra revoir / changer le rank().
(order by ... desc, ou autres, par exemple, a toi de voir en fonction de tes besoins / situtations)

Je sais que - pour Oracle au moins - les fonctions du type rank() sont accessibles en local, donc faisable dans un dataItem Cognos, si pas possible d'agir au niveau du SQL même.

En espérant t'aider,
@+
__________________
Citation:
Aux persévérants aucune route n'est interdite
Question: un ver a pied, c'est un millepatte unijambiste ?

Mon dernier trip musical

Citation:
Quiconque construit un jardin devient un allié de la lumière, aucun jardin n'étant jamais surgi des ténèbres
A priori un proverbe Perse ...
Sunchaser est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2011, 17h15   #8
Invité régulier
 
ben kab
Inscription : octobre 2010
Messages : 54
Détails du profil
Informations personnelles :
Nom : ben kab

Informations forums :
Inscription : octobre 2010
Messages : 54
Points : 9
Points : 9
Par défaut Comment gérer la clause case

Merci pour ta réponse Sunchaser,

Par contre je travaille sur report studio de Cognos.

Je suppose que ce n'est pas ça qu'il faudra que je fasse

Par avance Merci
demido est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2011, 17h29   #9
Membre habitué
 
Avatar de tfc3146
 
Homme Robert Labrousse
Développeur décisionnel
Inscription : février 2009
Messages : 79
Détails du profil
Informations personnelles :
Nom : Homme Robert Labrousse
Localisation : France

Informations professionnelles :
Activité : Développeur décisionnel
Secteur : Boutique - Magasin

Informations forums :
Inscription : février 2009
Messages : 79
Points : 134
Points : 134
Je pense que dans ton cas un regroupement par pays et l'ajout d'une simple bordure en bas de ta liste suffise
tfc3146 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2011, 18h03   #10
Membre Expert
 
Avatar de Sunchaser
 
Homme Vincent
OPNI
Inscription : décembre 2004
Messages : 1 668
Détails du profil
Informations personnelles :
Nom : Homme Vincent
Âge : 41
Localisation : France, Manche (Basse Normandie)

Informations professionnelles :
Activité : OPNI
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : décembre 2004
Messages : 1 668
Points : 2 036
Points : 2 036
Moi aussi,

Cognos 8.4 (et autres...), pour la partie reporting de mon travail.
Donc voici qq images, pour illustrer:
. J'ai un rapport avec liste de pays et sites (: img_report), fait d'un liste simple (: img_report_list).
La liste est alimentée par un QueryItem simple (: img_query_item), et tu peut voir le dataItem utilisé pour le ranking dans l'image (: img_data_item).
J'utilise ce dataItem dans une variable Boolean, voir (: img_variable), qui est utilisée pour le style conditionnel des colonnes (: img_var_in_column).

Voili,
@+


PS: mais la dernière image ne passe pas, apparemment c'est limité a 5. Dsl.

PS bis (le retour): attention aux propriétés un peu particulières de la fonction "rank()" en local, qui semble prendre par défaut DESC au lieu de ASC (ce qui est étonnant selon moi, m'enfin); je n'avais encore pas vu cela, comme je fais d'habitude tout ça dans le SQL.
Images attachées
Type de fichier : png img_report.PNG (5,0 Ko, 6 affichages)
Type de fichier : png img_report_list.PNG (4,0 Ko, 3 affichages)
Type de fichier : png img_query_item.PNG (2,1 Ko, 4 affichages)
Type de fichier : png img_data_item.PNG (27,0 Ko, 2 affichages)
Type de fichier : png img_variable.PNG (18,6 Ko, 3 affichages)
__________________
Citation:
Aux persévérants aucune route n'est interdite
Question: un ver a pied, c'est un millepatte unijambiste ?

Mon dernier trip musical

Citation:
Quiconque construit un jardin devient un allié de la lumière, aucun jardin n'étant jamais surgi des ténèbres
A priori un proverbe Perse ...
Sunchaser est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 10h29   #11
Invité régulier
 
ben kab
Inscription : octobre 2010
Messages : 54
Détails du profil
Informations personnelles :
Nom : ben kab

Informations forums :
Inscription : octobre 2010
Messages : 54
Points : 9
Points : 9
Par défaut Tracer une ligne à chaque changement de pays

Merci à tous pour vos réponses.

Dans mon cas, je travail avec un tableau, est-ce que c'est le même principe que je dois appliquer.

Merci à vous
demido est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 10h43   #12
Membre Expert
 
Avatar de Sunchaser
 
Homme Vincent
OPNI
Inscription : décembre 2004
Messages : 1 668
Détails du profil
Informations personnelles :
Nom : Homme Vincent
Âge : 41
Localisation : France, Manche (Basse Normandie)

Informations professionnelles :
Activité : OPNI
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : décembre 2004
Messages : 1 668
Points : 2 036
Points : 2 036
Bonjour,
Qu'appelles tu par "tableau" ? Ou quelle différence fais tu avec ce que j'utilise dans mon petit test ?
J'ai pris l'objet "List" de Cognos, je ne sais pas en Français quelle dénomination lui a été donnée (des fois, les traductions sont étonnantes, surtout dans les messages d'erreur d'ailleurs), voir la pièce jointe.

Néanmoins, a partir du moment ou tes données sont présentées et ordonnées de la bonne manière, cela doit pouvoir fonctionner.

Je te propose d'essayer, tout simplement.

Note: pour l'objet "List", dans mon exemple, j'ai oublié de mentionner qu'il faut ouvrir la propriété "Properties" de l'objet, et cocher la case "mon_rank" (ou "mon_rank" est le nom du DataItem utilisé pour le ranking), sinon message d'erreur lorsque l'on tente de lancer le rapport.
Voili

++
__________________
Citation:
Aux persévérants aucune route n'est interdite
Question: un ver a pied, c'est un millepatte unijambiste ?

Mon dernier trip musical

Citation:
Quiconque construit un jardin devient un allié de la lumière, aucun jardin n'étant jamais surgi des ténèbres
A priori un proverbe Perse ...
Sunchaser est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 11h23   #13
Invité régulier
 
ben kab
Inscription : octobre 2010
Messages : 54
Détails du profil
Informations personnelles :
Nom : ben kab

Informations forums :
Inscription : octobre 2010
Messages : 54
Points : 9
Points : 9
Par défaut Comment utiliser le rank

c'est un tableau croisé dynamique.

par contre je n'est pas bien saisie l'histoire de l'Item, c'est l'equivalent d'une variable ?

Est-ce que je pourais créer une variable booléenne, et dire à chaque changement de pays tracer la ligne par exemple.

En plus j'au un autre soucis dans les calculs cette fois ci

dans mon tableau j'ai le pays et les ville groupement sur pays, et en colonne les mois, et un total qui vient s'ajouter à la fin c'est à dire le total sur tous les mois pour un paus donné.

sur le total j'ai les bon chiffres, par contre pour les mois sur un des indicateur il me cummule tous, même en mettant l'agregation en automatique.
et même en rajoutant dans l'expression for{[Pays];[mois]}

Par avance merci
demido est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 11h59   #14
Membre Expert
 
Avatar de Sunchaser
 
Homme Vincent
OPNI
Inscription : décembre 2004
Messages : 1 668
Détails du profil
Informations personnelles :
Nom : Homme Vincent
Âge : 41
Localisation : France, Manche (Basse Normandie)

Informations professionnelles :
Activité : OPNI
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : décembre 2004
Messages : 1 668
Points : 2 036
Points : 2 036
Hi,

J'entends par DataItem, un champs d'une requête. Cela s'appelle peut être "donnée élementaire".
Pour le principe, je maintiens qu'avec mes messages #7 et #10, tu as la base et cela doit tourner.
J'ai vérifié et j'ai appliqué un principe équivalent dans un rapport contenant des crosstabs assez complexes; j'avais placé la variable au niveau de "Crosstab Fact Cells" dans la crosstab.


Maintenant, je pense aussi que la discussion a un "problème":
. il y a 3 sujets en 1.
Il faudrait splitter, je pense. (je ne suis pas modérateur, cela dit)

Le problème de la clause "CASE" (qui doit être résolu, je pense), le problème des bordures, et maintenant ton problème de calcul / total.
Je ne pense pas que cela soit très lisible, et ne facilitera pas les éventuels intervenants; je suis sur qu'un des petits anges du forum pourrait nous faire un split de la discussion et on aurait alors 3 sujets, non ?
(je me trompe peut être, ceci dit)

@+
__________________
Citation:
Aux persévérants aucune route n'est interdite
Question: un ver a pied, c'est un millepatte unijambiste ?

Mon dernier trip musical

Citation:
Quiconque construit un jardin devient un allié de la lumière, aucun jardin n'étant jamais surgi des ténèbres
A priori un proverbe Perse ...
Sunchaser est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 11h14   #15
Invité régulier
 
ben kab
Inscription : octobre 2010
Messages : 54
Détails du profil
Informations personnelles :
Nom : ben kab

Informations forums :
Inscription : octobre 2010
Messages : 54
Points : 9
Points : 9
Par défaut Comment gérer la clause case

Bonjour à tous,

Je n'est toujours pas résolu le problème du case
voila ce que j'ai mis dans l'instruction

case
when ([champs1] = 'valeur') and ([champs2] = 'valeur') then (valeur)
when ([champs1] = '001-QUIKSILVER') and ([champs2] <> 'valeur') then ('valeur')
when [champs1] = ''valeur'' then ('valeur')
when [champs1] = ''valeur'' then ('valeur')
else (999-Others)
end

Sachant que les valeur sont alphanumériques, mais j'ai une erreur de syntaxe

Merci
demido est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 13h17   #16
Membre Expert
 
Avatar de Sunchaser
 
Homme Vincent
OPNI
Inscription : décembre 2004
Messages : 1 668
Détails du profil
Informations personnelles :
Nom : Homme Vincent
Âge : 41
Localisation : France, Manche (Basse Normandie)

Informations professionnelles :
Activité : OPNI
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : décembre 2004
Messages : 1 668
Points : 2 036
Points : 2 036
Bonjour,

Un bonne chose peut être aurait été de donner le message d'erreur.
Sinon, comme j'expliquais ici: http://www.developpez.net/forums/d10...nnee-calculee/, il te faut être sur que tout tes champs utilisés dans ton CASE...WHEN... pour donner un résultat sortent bien des données du même type. Les valeurs doivent tous être de type "string" (ou varchar, etc du même genre), ou bien numérique, mais pas un "mix" des deux.
Donc, si besoin, faire un 'cast' dessus (un to_char(valeur) ou autre)

Sinon...pour le moment, je ne sais pas.
__________________
Citation:
Aux persévérants aucune route n'est interdite
Question: un ver a pied, c'est un millepatte unijambiste ?

Mon dernier trip musical

Citation:
Quiconque construit un jardin devient un allié de la lumière, aucun jardin n'étant jamais surgi des ténèbres
A priori un proverbe Perse ...
Sunchaser est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h59.


 
 
 
 
Partenaires

Hébergement Web