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 :

Regroupement de dates [10g]


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Février 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 3
    Par défaut Regroupement de dates
    Bonjour,

    je travaille sous "Toad" / Oracle 10g

    je voudrais regrouper une date "J" avec une date J+1
    Il s'agit de connaître toutes les règlements passé à J0 et J+1 pour une date arrivé à "J"

    c'est a dire : un client qui est arrivé le 01/02/2013 et qui a réglé le 02/02/2013 doit se retrouver dans le chapeau 01/02/2013 avec ceux qui auraient payé le 01/01/2013.

    J'espère que je suis claire...

    Aussi, voila ce que j'essaye d'écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT COUNT(GG_NUMDEM) 
    from  H_DEMAND, H_REGLEM 
    WHERE GG_NUMDEM = EM_NUMDEM 
    and GG_TYPREG = 'P' 
    AND  (EM_DATARR = GG_DATREG OR EM_DATARR = (GG_DATREG+1))
    la requete s'exécute bien dans toad mais me ramene ceux qui ont payé le jour même mais pas ceux à J+1

    merci pour votre aide.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 133
    Par défaut
    Ce serait cela que tu veux faire ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT  em_datarr
        ,   COUNT(gg_numdem) 
    FROM    h_demand
        INNER JOIN
            h_reglem 
            ON  gg_numdem = em_numdem 
    WHERE   gg_typreg = 'P' 
        AND em_datarr IN (gg_datreg, gg_datreg - 1)
    GROUP BY em_datarr
    ;
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre émérite Avatar de jkofr
    Homme Profil pro
    Senior Consultant DBA (Trivadis SA)
    Inscrit en
    Octobre 2006
    Messages
    484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Suisse

    Informations professionnelles :
    Activité : Senior Consultant DBA (Trivadis SA)
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 484
    Par défaut
    Hello,

    Je verrai plus ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    SELECT COUNT(GG_NUMDEM) 
    FROM  H_DEMAND, H_REGLEM 
    WHERE GG_NUMDEM = EM_NUMDEM 
    AND GG_TYPREG = 'P' 
    AND  (EM_DATARR > trunc (GG_DATREG,'dd')  and EM_DATARR <  trunc (GG_DATREG+2,'dd'))
    jko

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Février 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 3
    Par défaut Et avec déclaration d'une variable
    Pour commencer, merci a vous deux.

    Le "Select" de jkofr ressemble plus a ce que j'ai l'habitude d'écrire, cela fonctionne mais le résultat attendu n'est pas juste (ne voit pas le J+1).

    En revanche, le select de al1_24, plus difficile à intégrer pour moi, alors que je crois comprendre que littéralement c'est plus simple. fonctionne bien et le résultat est juste.

    Au final, voici le select :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT  em_datarr, COUNT(gg_numdem) 
    FROM    h_demand,    h_reglem 
    WHERE gg_numdem = em_numdem and  gg_typreg = 'P' 
        AND em_datarr IN (gg_datreg, gg_datreg - 1)
        GROUP BY em_datarr
    Cependant, si mon problème est résolu, je ne comprends pas le "-1" de gg_darreg -1, cela devrait être +1 ?

    Merci pour vos contributions.

  5. #5
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 133
    Par défaut
    L'utilisation de INNER JOIN pour les jointures est conseillée depuis la norme SQL 2 qui date de 1992.
    Même si Oracle a été long à adopter cette notation, elle est aujourd'hui prise en charge par la grande majorité des SGBD.
    Elle a entre autres l'avantage de séparer ce qui relève du filtrage (clause WHERE...) de ce qui identifie la jointure (sous-clause ON... de ...JOIN...) lors de la conception et de la maintenance de la requête.

    Quant à la sélection em_datarr IN (gg_datreg, gg_datreg - 1), ce n'est que la simplification de ta règle fonctionnelle :
    Règlement effectué le jour d'arrivée (gg_datreg = em_datarr) ou le lendemain (gg_datreg + 1 = em_datarr).
    Qui s'écrit donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        em_datarr = gg_datreg
    OR  em_datarr + 1 = gg_datreg
    ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        em_datarr = gg_datreg
    OR  em_datarr = gg_datreg - 1
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Février 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 3
    Par défaut
    C'est comme une équation...

    Merci pour vos explications et bon Week-End.

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

Discussions similaires

  1. [REQUETE]regroupement de date
    Par arn.oo dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 27/03/2007, 13h37
  2. Regroupement de date
    Par Yves2507 dans le forum Access
    Réponses: 4
    Dernier message: 17/11/2005, 10h56
  3. Pb de requete Regroupement de date
    Par Didi17 dans le forum Access
    Réponses: 3
    Dernier message: 19/10/2005, 10h22
  4. Requête sql regroupement de dates
    Par rocs dans le forum Langage SQL
    Réponses: 1
    Dernier message: 28/07/2005, 16h40
  5. Réponses: 5
    Dernier message: 29/09/2004, 11h05

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