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 :

[Oracle 10g]Transformer les éléments d'une liste en enregistrement


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de H.ile
    Profil pro
    Architecte de système d'information
    Inscrit en
    Janvier 2008
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Janvier 2008
    Messages : 122
    Par défaut [Oracle 10g]Transformer les éléments d'une liste en enregistrement
    Aloha
    Je dispose d'une table avec des enregistrements type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Chp1|Chp2
    "A,B,C,D"|"Blabla"
    Comment faire pour avoir comme enregistrements, la transposition :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Chp1|Chp2
    A|Blabla
    B|Blabla
    ...
    Sachant que je peux avoir 1, 2, ou X membres dans mon Chp1
    D'avance, merci,

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 954
    Par défaut
    Regarde oracle split varchar pour plus d'infos
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    SQL> set echo on
    SQL> set linesize 200
    SQL> set pagesize 100
    SQL> column list_c1 format A5
    SQL> 
    SQL> drop table t
      2  /
     
    Table dropped.
     
    SQL> create table t (c1 varchar2(20), c2 varchar2(20))
      2  /
     
    Table created.
     
    SQL> insert into t values ('A,B,C,D','Blabla');
     
    1 row created.
     
    SQL> insert into t values ('E,F,G','Blibli');
     
    1 row created.
     
    SQL> insert into t values ('K,M,O,P,T,R','Blublu');
     
    1 row created.
     
    SQL> commit
      2  /
     
    Commit complete.
     
    SQL> SELECT t.c2, x.column_value AS list_c1
      2    FROM t
      3   CROSS JOIN TABLE(
      4                cast(multiset(
      5                         SELECT substr( ','||c1||',',
      6                                        instr( ','||c1||',', ',', 1, rownum )+1,
      7                                        instr( ','||c1||',', ',', 1, rownum+1 )
      8                                               -instr( ','||c1||',', ',', 1, rownum )-1
      9                                       )
     10                           FROM dual
     11                        connect BY level <= length(c1)-length(REPLACE(c1,',',''))+1
     12                              ) AS sys.odcivarchar2list )
     13                      ) x
     14  /
     
    C2                   LIST_
    -------------------- -----
    Blabla               A
    Blabla               B
    Blabla               C
    Blabla               D
    Blibli               E
    Blibli               F
    Blibli               G
    Blublu               K
    Blublu               M
    Blublu               O
    Blublu               P
    Blublu               T
    Blublu               R
     
    13 rows selected.

Discussions similaires

  1. Réponses: 1
    Dernier message: 21/04/2007, 16h36
  2. [Oracle 10g] renumérotez les records d'une table
    Par awalter1 dans le forum Langage SQL
    Réponses: 8
    Dernier message: 29/03/2007, 13h48
  3. Réponses: 12
    Dernier message: 04/03/2007, 11h43
  4. Tri aléatoire parmis les éléments d'une liste
    Par ahouba dans le forum Access
    Réponses: 2
    Dernier message: 29/06/2006, 18h03
  5. Réponses: 3
    Dernier message: 15/05/2006, 16h09

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