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 :

Rechercher des données similaires [10g]


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de roxise
    Inscrit en
    Septembre 2009
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 98
    Par défaut Rechercher des données similaires
    bonjour à tous,
    je suis en train de rechercher une fonction SQL (oracle) qui permet d'extraire les clients qui possèdent le même code d'observation sur chaque trimestre depuis sa création, c'est à dire j'ai une table "clt" qui identifie le code client, son code d'observation et ses périodes, chaque périodes nous mentionnons un code obs, exemple : ABS qui signifie absent, exp :

    périodes client 1 client 2 client 3
    T1 2019 ABS ABS ABS
    T2 2019 ABS XTP ES
    T3 2019 ABS CDT ES
    T4 2019 ABS ABS ABS
    T1 2020 ABS ABS ABS
    T2 2020 ABS ES ABS
    T3 2020 ABS ES ABS

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

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

    Tu groupes par client, et tu vérifies qu'il n'y a qu'un seul code Obs (min = max)
    Attention si le code peut être NULL faut le gérer.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT client, min(code_Obs), max(code_obs)
    FROM ctx
    GROUP BY client
    HAVING min(code_Obs) = max(code_obs)

  3. #3
    Membre éclairé Avatar de roxise
    Inscrit en
    Septembre 2009
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 98
    Par défaut
    merci, j'ai essayé de tester, malheureusement elle me fait retourner uniquement ceux qui possèdent ce codobs mais pas durant chaque périodes...

    voici la requête :
    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
    SELECT distinct cns.idtctr,  
                 min(h.idtcodobs), max(h.idtcodobs)
          FROM  ind    indx  ,
                cns      ,
                 fac      ,
                codobs  h
         WHERE     indx.idxfct = 1
               AND indx.idtcpr = cns.idtcpr(+)  AND indx.numcdr = cns.numcdr(+)  AND indx.idtind = cns.idtindnve(+)
               AND indx.idtcodobs = h.idtcodobs(+)
                AND fac.idtfac(+) = cns.idtfac
               AND NVL (fac.idttypfct,0) <> '2'
               AND NVL (fac.fctann, '0') = '0'
               AND indx.inv IS NULL   
                and h.idtcodobs=177 -- signifie ITV codobs à rechercher --
                GROUP BY cns.idtctr
    HAVING min(h.idtcodobs) = max(h.idtcodobs)

  4. #4
    Membre éclairé Avatar de roxise
    Inscrit en
    Septembre 2009
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 98
    Par défaut
    Citation Envoyé par roxise Voir le message
    Qui peut m'aider svp à résoudre ce problème ?
    à noter que la table indx, contient les codes observations;
    - fac : les périodes
    - codobs : les libellés des codes obs
    - cns : les clients .

    crldt

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 021
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 021
    Billets dans le blog
    6
    Par défaut
    Il faut aussi rajouter un filtre du genre HAVING COUNT(distinct PERIODE)>= ???
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  6. #6
    Membre éclairé Avatar de roxise
    Inscrit en
    Septembre 2009
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 98
    Par défaut
    merci, malheureusement je ne pourrais savoir le nombre de périodes pour chaque client, il y'a ceux qui possèdent 10, d'autres 20 etc...

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

Discussions similaires

  1. [XL-2007] Rechercher des données similaires dans plusieurs cellules
    Par Cadillac98 dans le forum Excel
    Réponses: 1
    Dernier message: 17/11/2011, 20h01
  2. Rechercher des données dans un autre workbook
    Par Azounet1529 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 23/07/2007, 09h26
  3. [Formulaire] Rechercher des données à l'aide d'une zone de texte
    Par rantanplan81 dans le forum VBA Access
    Réponses: 4
    Dernier message: 14/06/2007, 15h25
  4. Réponses: 1
    Dernier message: 30/08/2006, 19h08
  5. Rechercher des enregistrements similaires
    Par charestm dans le forum Access
    Réponses: 3
    Dernier message: 16/07/2006, 21h04

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