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 :

Problème requête transposition


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 55
    Par défaut Problème requête transposition
    Bonjour,
    Je me triture l'esprit depuis ce matin avec ce problème sans pouvoir y arriver :

    J'ai une table comme suit :

    ID_FRM CODE VAL_DATE VAL_NUM
    1 FRM_DATE1 1/1/2021
    1 FRM_DATE2 5/1/2021
    1 FRM_DATE3 10/1/2021
    1 FRM_VAL1 15
    1 FRM_VAL2 30
    1 FRM_VAL3 20
    2 FRM_DATE1 10/2/2021
    2 FRM_DATE2 15/2/2021
    2 FRM_DATE3 20/2/2021
    2 FRM_VAL1 5
    2 FRM_VAL2 7
    2 FRM_VAL3 9

    Et j'aimerais arriver à une table comme cela :

    ID_FRM DATE1 VAL1 DATE2 VAL2 DATE3 VAL3
    1 1/1/2021 15 5/1/2021 30 10/1/2021 20
    2 10/2/2021 5 15/2/2021 7 20/2/2021 9

    Quelqu'un aurait-il une idée ?

    D'avance merci !!

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 175
    Par défaut
    Bonjour,

    C'est un pivot que tu veux faire. Par contre les nombre de valeurs à pivoter est-il fixe?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 55
    Par défaut
    Oui tout à fait

  4. #4
    Membre Expert
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 175
    Par défaut
    Ok, tu peux essayer un truc comme ça (j'ai appelé la table "t"):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select * 
    from (select id_frm, code, nvl(to_char(val_date, 'dd/mm/yyyy'), to_char(val_num)) valeur from t)
    pivot (max(valeur) for code in ('FRM_DATE1' as date1, 'FRM_VAL1' as val1, 'FRM_DATE2' as date2, 'FRM_VAL2' as val2, 'FRM_DATE3' as date3, 'FRM_VAL3' as val3));
    J'ai fait une conversion en char pour simplifier, mais si tu as besoin au final des valeurs DATE et NUMBER, alors il faut reconvertir les colonnes finales.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 55
    Par défaut
    Merci pour ce retour, par contre il y a qq chose de bizarre :
    Les valeur numérique sont bien remontées mais les dates sont toutes à null...

    Une idée ?

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 55
    Par défaut
    Oups au temps pour moi (c'est vendredi...)
    Une petite erreur de transcription, les dates remontent nickel.

    Par contre quand je tente de remettre au format date :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for code in ( to_date('FRM_DATE1', 'dd/mm/yyyy') as date1,
    J'ai une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ORA-01858: Caractère non numérique trouvé à la place d'un caractère numérique

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

Discussions similaires

  1. Problème: Requête utilisant NOT IN
    Par fages dans le forum Langage SQL
    Réponses: 4
    Dernier message: 04/05/2004, 10h18
  2. erreur3073 Problème requête
    Par amel123456789 dans le forum Langage SQL
    Réponses: 8
    Dernier message: 01/04/2004, 10h15
  3. Problème requête qui renvoie plusieurs
    Par dai.kaioh dans le forum Langage SQL
    Réponses: 6
    Dernier message: 01/04/2004, 10h07
  4. Problème requête avec UNION et ORDER BY
    Par Yann21 dans le forum Langage SQL
    Réponses: 12
    Dernier message: 12/12/2003, 11h02
  5. Réponses: 8
    Dernier message: 23/10/2003, 16h22

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