IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

Requête avec une concaténation dynamique


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Femme Profil pro
    Consultante BI
    Inscrit en
    Mars 2011
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Consultante BI
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 236
    Par défaut Requête avec une concaténation dynamique
    Bonjour,

    Je veux construire un champs composé en utilisant la concaténation voila un exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT CODE , (SELECT COL1, COL2 WHERE i=1)||(SELECT COL1, COL2 WHERE i=2)||(SELECT COL1, COL2 WHERE i=3) as condition FROM MA_TABLE
    la concaténation dépend de la valeur max de i , je m'explique si i=5 alors j'ai 5 concaténation .

    Dans l'exemple max(i)=3 alors j'ai fais trois concaténations.

    Je veux faire ça dynamiquement : avoir la valeur maximale de i et de suite
    faire la concaténation.

    Merci d'avance

  2. #2
    Membre Expert
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2012
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2012
    Messages : 652
    Par défaut
    Le SQL Dynamique est ton ami !

  3. #3
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Votre question est confuse. Vous cherchez quelque chose comme l’exemple ou autre chose?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 
    Connected as mni
     
    SQL> 
    SQL> Select empno, case deptno
      2                  When 10 Then ename
      3                  When 20 Then ename||job
      4                  Else ename||job||to_char(sal)
      5                end
      6    from emp
      7  /
     
    EMPNO CASEDEPTNOWHEN10THENENAMEWHEN2
    ----- -----------------------------------------------------------
     7369 SMITHCLERK
     7499 ALLENSALESMAN1600
     7521 WARDSALESMAN1250
     7566 JONESMANAGER
     7654 MARTINSALESMAN1250
     7698 BLAKEMANAGER2850
     7782 CLARK
     7788 SCOTTANALYST
     7839 KING
     7844 TURNERSALESMAN1500
     7876 ADAMSCLERK
     7900 JAMESCLERK950
     7902 FORDANALYST
     7934 MILLER
     
    14 rows selected
     
    SQL>

  4. #4
    Membre éclairé
    Femme Profil pro
    Consultante BI
    Inscrit en
    Mars 2011
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Consultante BI
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 236
    Par défaut
    Merci pour vos réponses , peut être que j'ai pas bien posé ma question:

    Ma requête dépend d'un champs i ce champs s'incrémente chaque fois ou il y a une nouvelle ligne, (si i=3 alors j'ai trois lignes), mon besoin est de concaténer ces informations en se basant sur le i .

    d’après le lien présenté par Scriuiw

    j'ai eu une idée

    Je calcule le max(i) et par la suite j'utilise while (while max(i)>0) {fais les concaténations}

    Que ce que vous en pensez?

  5. #5
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Avec un exemple on comprendra mieux.. c'est encore flou pour moi.

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2010
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 412
    Par défaut
    Vous ne voulez pas faire un pivot par hasard?

  7. #7
    Membre éclairé
    Femme Profil pro
    Consultante BI
    Inscrit en
    Mars 2011
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Consultante BI
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 236
    Par défaut
    D'accord , voilà un exemple :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    CODE	 VALEUR  CLE    INDEX     OPE         MIN         MAX    LIB	
     1        20       PTS    1        Apartir de    20           39      achat 
     1        30       PTS    2        Apartir de    40           49      achat
    L'explication : L'avantage qui possède un code=1 à trois conditions: si l'achat entre 20 et 39 le client pourra avoir 20pts bonus , si l'achat entre 40 et 49 le client pourra avoir 30 pts
    Mon but est de construire une dimension Avantage, je veux concaténer tous ces champs et les mettre dans un seul champs , autrement dit pour chaque avantage je voudrais avoir un seul ligne
    Mon résultat dans cette exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    CODE      CONDITION
     1           20 PTS A PARTIR DE 20 39 ACHAT &&  20 PTS A PARTIR DE 20 39      ACHAT
    L'utilisateur de système peut mettre plusieurs condition pour un seul avantage, mon besoin et d'avoir le max de l'index et en se basant sur ce max je fais la concaténation .

  8. #8
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Avez-vous quelques données pour illustrer votre besoin ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Requête comment faire un Update avec une concaténation
    Par Chocolat49 dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 13/02/2014, 20h39
  2. Critère de requête avec une zone de liste dans un formulaire
    Par Dehez dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 19/06/2006, 12h49
  3. Problème de requête avec une condition IN
    Par sorcer1 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 20/10/2005, 11h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo