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 :

Pb de reflexion


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 113
    Par défaut Pb de reflexion
    j'ai une table avec le contenu suivant:

    pas:code societé
    mat:matricule
    coln:colonne
    ord:ligne
    res:resultat
    des:designation
    (voir piéce jointe)
    je fais la requete suivante:
    select

    pas,mat,
    SUM(case when coln =1 and ord=5 then res else 0 END) "1_5",
    sum(case when coln =1 and ord=2 then res else 0 END) "1_2"
    from
    table1
    GROUP BY pas,mat

    cette requete me donne une seule ligne par matricule, mais malheureusement cette requete affiche seulement le resultat(res) sans afficher la designation (des).
    si j'ajoute des parmi les champs a selectionner des cette requete me donne tant de lignes de (des) qui existent pour chaque employé.
    moi j'aimerai bien aficher pour chaque employé toutes les valeurs avec leur designation .
    ex:
    au lieu que "1_5"=1235 -> "1_5"=prime x: 1235

    avez vous un idée
    svp aidez moi j'ai besoin de vos idées
    merci d'avance
    Images attachées Images attachées  

  2. #2
    Membre expérimenté Avatar de Sceener
    Inscrit en
    Mai 2007
    Messages
    231
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 231
    Par défaut
    Citation Envoyé par fatati Voir le message
    si j'ajoute des parmi les champs a selectionner des cette requete me donne tant de lignes de (des) qui existent pour chaque employé.
    moi j'aimerai bien aficher pour chaque employé toutes les valeurs avec leur designation .
    la par exemple tu es contradictoire , si par exemple un employé ayant deux description différentes , ta requête les sélectionnera , sinon elle va afficher une seule description pour les mêmes valeurs.

    Explique en clair ce que tu veux et essaye d'utiliser la balise [CODE]

  3. #3
    Rédacteur
    Avatar de Bruno2r
    Homme Profil pro
    Exploitation des données
    Inscrit en
    Décembre 2006
    Messages
    2 566
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Exploitation des données
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 566
    Par défaut
    Je n'ai matériellement pas le temps de tester ce que je te propose ...
    Pourrais tu essayer ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select
    pas,mat,res,
    SUM(case when coln =1 and ord=5 then res else 0 END) over (partition by mat order by des) "1_5",
    sum(case when coln =1 and ord=2 then res else 0 END) over (partition by mat order by des)"1_2"
    from
    table1
    order by pas,mat,des
    Précisez la VERSION !
    Un message vous a aidé ? Votez en cliquant sur Pensez au bouton
    Tutoriels BO et FAQ BO
    "A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!"

  4. #4
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    avec les données attachées, quel est le résultat attendu?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    select pas,mat,
      case when coln =1 and ord=5 then res else 0 END "1_5",
      case when coln =1 and ord=2 then res else 0 END "1_2",des 
    from table1;
           PAS        MAT        1_5        1_2 DES
    ---------- ---------- ---------- ---------- --------
           100          3          0          0 valeur 1
           100          3      72000          0 valeur 2
           100          3          0          0 valeur 3
           100          5          0          0 valeur 1
           100          5      14592          0 valeur 2
           100          5          0          0 valeur 3

  5. #5
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    ou peut-être

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    select pas,mat,
      max(case when coln =1 and ord=5 then des||':'||res END) "1_5",
      max(case when coln =1 and ord=2 then des||':'||res END) "1_2" 
    from t group by pas,mat;
           PAS        MAT 1_5             1_2
    ---------- ---------- --------------- ---------------
           100          3 valeur 2:72000
           100          5 valeur 2:14592

  6. #6
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    voire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    select * from t pivot (max(des||':'||res) for (coln,ord) in ((1,2),(1,5)))
           PAS        MAT 1_2             1_5
    ---------- ---------- --------------- ---------------
           100          3                 valeur 2:72000
           100          5                 valeur 2:14592
    merci de toujours préciser ta version

Discussions similaires

  1. [VB.NET]Reflexion lister les membres d'une classe ...presque
    Par lucie.houel dans le forum ASP.NET
    Réponses: 19
    Dernier message: 20/09/2005, 13h49
  2. [débat] Reflexion sur « quel langage ?»
    Par jack69 dans le forum Langages de programmation
    Réponses: 8
    Dernier message: 23/05/2005, 08h30

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