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 :

Souci requête Oracle [11g]


Sujet :

SQL Oracle

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 71
    Points : 49
    Points
    49
    Par défaut Souci requête Oracle
    bonjour,

    J'ai un soucis avec une requête :

    j'ai une table qui contient les donnée comme suit :

    client /// trimestre /// achat /// vente /// année
    2545 /// 1 /// 160 /// 120 /// 2018
    2545 /// 2 /// 150 /// 120/// 2018
    2545 /// 3 /// 130 /// 0 /// 2018
    2545 /// 4 /// 180 /// 12 /// 2018
    2545 /// 1 /// 110 /// 220 /// 2019
    2545 /// 2 /// 0 /// 0 /// 2019

    je veux faire une requête qui me retourne les client actif ,
    si achat OU vente >= 150 dans le trimestre 1, 2 ,3,ou4 alors c'est un client actif sinon non actif
    il suffit quil est un seul trimestre ou il satisfait les condition pour être considéré comme actif

    le resultat final doit etre comme suit
    client /// annee /// flag_actif
    2545 /// 2018 /// 1
    2545 /// 2019 /// 1

    voici mon code
    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
     
       select  num_client,annee,
    case when
          ((achat>150 or depense>=150) and TRIMESTRE=1  and annee >=2018  )
     
             or 
     
          ((mnt_achats_cb_trim>150 or mnt_retraits_cb_trim>=150) and TRIMESTRE=2 )
     
            or
     
          ( (mnt_achats_cb_trim>150 or mnt_retraits_cb_trim>=150) and TRIMESTRE=3)
     
              or 
     
            ( (mnt_achats_cb_trim>150 or mnt_retraits_cb_trim>=150) and TRIMESTRE=4 )
     
      then  1 else 0 
    end as flag actif
     
                      from donnee ct
     
                      where num_client=2545
                      and annee >=2018
    Or ma requette affiche comme suit

    num_client /// annee /// flag_actif
    2545 /// 2018 /// 1
    2545 /// 2018 /// 1
    2545 /// 2018 /// 0
    2545 /// 2018 /// 1
    2545 /// 2019 /// 1
    2545 /// 2019 /// 0

    on dirait qu'il affiche le flag_actif par semestre alors que mois je veux qu'il l'affiche sur toute l'année.

    Pouvez vous m'aidez svp

  2. #2
    McM
    McM est déconnecté
    Expert éminent

    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
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Bonjour,

    Il vaut mieux donner des requêtes correctes (mnt_achats_cb_trim, mnt_retraits_cb_trim, depense, vente, flag actif ?)
    Pareil pour les données, un SELECT nous facilite les tests et la réponse sera d'autant plus rapide et juste

    Ce select fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT num_client, annee, MAX(CASE WHEN achat > 150 OR depense > 150 THEN 1 ELSE 0 END) actif
    FROM
      (SELECT 2545 num_client, 1 trimestre, 160 achat, 120 depense, 2018 annee FROM dual
      UNION ALL SELECT 2545, 2, 150, 120, 2018 FROM dual
      UNION ALL SELECT 2545, 3, 130, 0, 2018 FROM dual
      UNION ALL SELECT 2545, 4, 180, 12, 2018 FROM dual
      UNION ALL SELECT 2545, 1, 110, 120, 2019 FROM dual
      UNION ALL SELECT 2545, 2, 0, 0, 2019 FROM dual)
    GROUP BY num_client, annee
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 71
    Points : 49
    Points
    49
    Par défaut
    J'ai testé est ça marche , merci infiniment

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

Discussions similaires

  1. Requête oracle
    Par Requin15 dans le forum Oracle
    Réponses: 1
    Dernier message: 28/03/2006, 09h53
  2. Requête oracle : update et sélection...
    Par Requin15 dans le forum Langage SQL
    Réponses: 10
    Dernier message: 27/03/2006, 19h32
  3. [Débutant]Soucis requête jointure externes (8-i)
    Par jdotti dans le forum Oracle
    Réponses: 7
    Dernier message: 14/10/2005, 15h39
  4. Traduire requête oracle vers access
    Par petitmic dans le forum Access
    Réponses: 1
    Dernier message: 27/09/2005, 18h21
  5. Voir les dernières requête Oracle
    Par newchurch dans le forum Oracle
    Réponses: 4
    Dernier message: 11/04/2005, 23h41

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