Précédent   Forum des professionnels en informatique > Bases de données > Oracle > PL/SQL
PL/SQL Forum d'entraide sur le PL/SQL
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 03/08/2011, 14h54   #1
Candidat au titre de Membre du Club
 
Justine Dreyfus
Inscription : juin 2010
Messages : 109
Détails du profil
Informations personnelles :
Nom : Justine Dreyfus

Informations forums :
Inscription : juin 2010
Messages : 109
Points : 14
Points : 14
Par défaut Decode avec résultats concaténés dans une même chaine

Bonjour,

Je travaille sous Oracle 10G.
Je réalise la requête suivante :

Code sql :
1
2
3
4
5
6
7
 
SELECT decode( ccp_libelle, 'AUTO INDIVIDUELLE CONDUCTEUR' , gad_prime_nette, 0 ) CCP_LIBELLE,
decode( ccp_libelle, 'DOMMAGES AUTO 4 ROUES -3,5T' , gad_prime_nette, 0 ) CCP_LIBELLE, 
decode( ccp_libelle, 'RCAUTO 4 ROUES - 3,5T' , gad_prime_nette, 0 ) CCP_LIBELLE, 
decode( ccp_libelle, 'ASSISTANCE' , gad_prime_nette, 0 ) CCP_LIBELLE,
decode( ccp_libelle, 'PROTECTION JURIDIQUE AUTO' , gad_prime_nette, 0 ) CCP_LIBELLE 
FROM t_cde_cpt

Le fait est qu'ici, je donne arbitrairement 5 libellés de ccp, cependant, dans ma réelle requête, je ne connais pas le nombre de libellés différents. Je construits donc ma requête dynamiquement en concaténant les différents libellés, puis je l'exécute ensuite

Avec cette requête, j'obtiens des résultats du genre :
CCP_LIBELLE CCP_LIBELLE_1 CCP_LIBELLE_2 CCP_LIBELLE_3 CCP_LIBELLE_4
0 0 500 0 200
0 10 20 0 0
50 100 0 0 0

Alors que je souhaiterai avoir quelque chose de ce style :
CCP_LIBELLE
0;0;500;0;200
0;10;20;0;0
50;100;0;0;0

Ici la concaténation n'est pas réalisée dans la requête, parce que je ne sais pas encore comment regrouper les résultats dans un même CCP_LIBELLE...

Comment faire pour mettre tout le contenu dans le même CCP_LIBELLE?

J'ai testé la requête suivante :

Code sql :
1
2
 
SELECT decode( ccp_libelle, 'AUTO INDIVIDUELLE CONDUCTEUR' , gad_prime_nette, 'DOMMAGES AUTO 4 ROUES -3,5T' , gad_prime_nette, 'RCAUTO 4 ROUES - 3,5T' , gad_prime_nette, 'ASSISTANCE' , gad_prime_nette, 'PROTECTION JURIDIQUE AUTO' , gad_prime_nette, 0 ) CCP_LIBELLE FROM t_cde_cpt

Seulement, lorsque ma requête s'exécute, je récupère dynamiquement tous les libellés pour la construire, et la plupart du temps j'ai une erreur : nombre d'arguments excessif. Cela provient à mon avis de la liste de libellés qui est trop longue pour le decode.

Merci pour votre aide! Je dois résoudre ce problème avant demain soir et je bloque dessus...
justinedr71 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2011, 15h06   #2
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 437
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 437
Points : 4 173
Points : 4 173
J'ai pas du bien comprendre.. tu veux jsute concaténer des champs ?
Code :
1
2
3
4
5
6
7
8
9
10
SELECT decode( ccp_libelle, 'AUTO INDIVIDUELLE CONDUCTEUR' , gad_prime_nette, 0 ) 
||';'||
decode( ccp_libelle, 'DOMMAGES AUTO 4 ROUES -3,5T' , gad_prime_nette, 0 ) 
||';'||
decode( ccp_libelle, 'RCAUTO 4 ROUES - 3,5T' , gad_prime_nette, 0 ) 
||';'||
decode( ccp_libelle, 'ASSISTANCE' , gad_prime_nette, 0 )
||';'||
decode( ccp_libelle, 'PROTECTION JURIDIQUE AUTO' , gad_prime_nette, 0 ) CCP_LIBELLE,
FROM t_cde_cpt
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 08/08/2011, 09h53   #3
Candidat au titre de Membre du Club
 
Justine Dreyfus
Inscription : juin 2010
Messages : 109
Détails du profil
Informations personnelles :
Nom : Justine Dreyfus

Informations forums :
Inscription : juin 2010
Messages : 109
Points : 14
Points : 14
C'est exactement ça, ça fonctionne très bien!

Merci beaucoup pour votre réponse
justinedr71 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 12h28.


 
 
 
 
Partenaires

Hébergement Web