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 Affichage différentes valeurs en fonction de l'année [11g]


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Analyse système
    Inscrit en
    Juin 2013
    Messages
    976
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 976
    Par défaut Problème Affichage différentes valeurs en fonction de l'année
    Bonjour,

    j'ai un petit soucis sur une requête que je dois faire tournée pour une année donnée (en condition), seulement le hic, parmi les champs que je dois retourné, il me faut les champs de l'année N-1 pour comparaison, exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    select nomPersonne,    
     prenom,
    nvl((select nbJoursTravaille_2017   FROM table1 t41  inner join table2 t26 on ...... inner join table3 tcamp on ......  and  tannee.annee=2017-1),0) as nbJoursTravaille_2016,
    --doit afficher la valeur de l'année 2016 mais ça me met la valeur de l'année 2017
    nbJourTravaille,-- doit affiche la valeur de l'année 2017 logique
    nvl((select droitAcquis_2017 FROM table1 t41  inner join table2 t26 on ...... inner join table3 tcamp on ......  and  tannee.annee=2017-1),0) as droits_acquis2016,
    droits_acquis2017
    from personne t1
    inner join année t2 on ......
    ........
    where t2.année = 2017
    seulement le hic, pour chacun des mes champs nbJoursTravaille_2017, nbJourTravaille_2016,droitAcquis_2017_droits_acquis2016, il m'affiche le résultat sur l'année 2017 ( ce qui est pour moi logique car en condition on a année 2017.

    y a t-il un moyen d'avoir plusieurs résultats, portant sur l'année N et N-1, sachant que ma condition initiale ne peut etre changé?
    Donc si on choisit 2017, on nous affiche les resultats de l'année 2017 et 2016
    si 2014, on affiche les résultats de l'année 2014 et 2013, merci à vous

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2007
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 260
    Par défaut Utiliser deux sous-requêtes
    Bonjour android59,

    C'est assez compliqué de t'aider sans une requête totalement scriptée que tu pourrais produire sur un jeu d'essai simplifié.
    Une solution pour comparer deux années est d'utiliser deux sous-requêtes.
    * la première retourne les données de l'année 2017 (année N)
    * la seconde retourne les données de l'année 2016 (année N-1)
    Une requête principale affiche les champs des deux sous-requêtes à sa convenance en les rapprochant sur l'identifiant de la personne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    select prs.nomPersonne, anneen.nbJoursTravaille as nbJoursTravaille_2017 , anneenm1.nbJoursTravaille as nbJoursTravaille_2016
    from 
      personne prs, 
      (select t1.personneid, t1.nbJoursTravaille  from t1 where annee = N) anneen,
      (select t1.personneid, t1.nbJoursTravaille  from t1 where annee = N-1) anneenm1,
    where anneen.personneid(+) = prs.personneid
    and anneenm1.personneid(+) = prs.personneid
    ;
    Pozzo

  3. #3
    Membre éprouvé
    Homme Profil pro
    Analyse système
    Inscrit en
    Juin 2013
    Messages
    976
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 976
    Par défaut
    oui en effet, j'imagine, merci pour ton retour je vais essayé de voir ça

    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
     
    select
    	sal.identifiant as identifiant,
    	raisoc as raisocial,
    	nom || ' ' || prenom as nom_sala,
    	x530_numss as num_ss,
    	datefincontrat as fincontrat,
     
     
      nvl((select t41.Tauxhoraire  FROM dossiers2 t41  inner join ..... where  t26.c210_idgrp=d1.c210_idgrp and  tcamp.d010_annee=(cast('2017' as integer)-1)),0) as tauxhoraire, /*n-1 donc  doit afficher la valeur de 2016*/
      nvl(d2.Tauxhoraire,0) as Tauxhoraire, /* doit afficher la valeur de 2017 */
     
     
    from	dossiers2 d2
    inner join	dossiers1 d1			on d2.idrefd2 = d1.id
    inner join	tableAnnee		tA	on d1.idrefTA = TA.id
    inner join	personne sal			on d1.idrefsal = sal.id
     
    where to_number(d010_annee) ='2017'  and sal.identifiant = '321654'/*numentreprise*/
    voici un exemple issu de ma requete d'origine, j'ai fais au mieux pour le nom des champs et table, je me doute que c'est pas simple mais je peux pas trop mettre le vrai nom des champs.

    je vais test ta solution, merci

  4. #4
    Membre éprouvé
    Homme Profil pro
    Analyse système
    Inscrit en
    Juin 2013
    Messages
    976
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 976
    Par défaut
    En m'inspirant de ta réponse, j'ai reussi à avoir ce que je voulais, merci

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2007
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 260
    Par défaut
    Citation Envoyé par android59 Voir le message
    En m'inspirant de ta réponse, j'ai reussi à avoir ce que je voulais, merci
    merci de ce retour positif !

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

Discussions similaires

  1. [AC-2003] Requête obtenir la deuxième plus grande valeur en fonction d'une année
    Par shakapouet dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 29/08/2012, 14h44
  2. Réponses: 2
    Dernier message: 19/04/2012, 14h02
  3. [XSLT] Affichage des valeurs en fonction d'autres
    Par devlo2006 dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 08/04/2008, 18h28
  4. Réponses: 10
    Dernier message: 08/12/2006, 02h18
  5. [XHTML] Problème affichage différent sur Internet Explorer et FireFox
    Par espaladito dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 22/09/2006, 18h05

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