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

Langage SQL Discussion :

[ORACLE]20 dernières dates de facturation


Sujet :

Langage SQL

  1. #1
    Membre expérimenté
    Avatar de Frank
    Homme Profil pro
    Chef de projet Informatique
    Inscrit en
    Avril 2002
    Messages
    1 095
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Chef de projet Informatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 095
    Points : 1 392
    Points
    1 392
    Par défaut [ORACLE]20 dernières dates de facturation
    Bonjour,

    je suis confronté à un problème absurde.
    Je dois identifier les 20 derniers jours de facturation pour me permettre de ramener le total des quantités vendues par produit sur cette période.

    Voici la reqûete que je triture dans tout les sens depuis deux bonnes heures sans arriver à un résultat cohérent:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT DATE_FAC 
    FROM MATABLEDEVENTE
    group by DATE_FAC
    HAVING count(*)<=20 
    ORDER BY DATE_FAC desc ;
    Le résultat que j'obtiens est celui çi:

    DATE_FAC

    12/03/2005
    17/07/2004
    12/06/2004
    05/06/2004
    28/06/2003
    .

    Or, je m'attends à récuperer vingt lignes contenant des dates toutes différentes et allant du 18/10/2005 (dernière date de facturation dans ma table) au 21/09/2005.

    Bien qu'ayant épluché pas mal des posts sur le sujet, je n'arrive toujours pas à un résultat satisfaisant.

    Une bonne âme peut il aider le que je suis ?

  2. #2
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut Re: [ORACLE]20 dernières dates de facturation
    Citation Envoyé par Frank
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT DATE_FAC 
    FROM MATABLEDEVENTE
    group by DATE_FAC
    HAVING count(*)<=20 
    ORDER BY DATE_FAC desc ;
    Là, ta requête te ramène les dates pour lesquelles tu as moins de 20 lignes dans la table MATABLEDEVENTE.

    Pout t'en convaincre, teste ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT DATE_FAC, count(*) AS Date_NBRE
    FROM MATABLEDEVENTE
    group by DATE_FAC
    HAVING count(*)<=20 
    ORDER BY DATE_FAC desc ;
    Si tu veux les 20 dernières dates avec du chiffre, il faut que je cherches un peu ... Le RowNum est malheuresement invalide si tu as un order By ...
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  3. #3
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut Re: [ORACLE]20 dernières dates de facturation
    Citation Envoyé par Xo
    Si tu veux les 20 dernières dates avec du chiffre, il faut que je cherches un peu ... Le RowNum est malheuresement invalide si tu as un order By ...
    Tu peux contourner ce problème
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  4. #4
    Membre expérimenté
    Avatar de Frank
    Homme Profil pro
    Chef de projet Informatique
    Inscrit en
    Avril 2002
    Messages
    1 095
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Chef de projet Informatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 095
    Points : 1 392
    Points
    1 392
    Par défaut Re: [ORACLE]20 dernières dates de facturation
    Citation Envoyé par Xo
    Citation Envoyé par Frank
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT DATE_FAC 
    FROM MATABLEDEVENTE
    group by DATE_FAC
    HAVING count(*)<=20 
    ORDER BY DATE_FAC desc ;
    Là, ta requête te ramène les dates pour lesquelles tu as moins de 20 lignes dans la table MATABLEDEVENTE.

    Pout t'en convaincre, teste ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT DATE_FAC, count(*) AS Date_NBRE
    FROM MATABLEDEVENTE
    group by DATE_FAC
    HAVING count(*)<=20 
    ORDER BY DATE_FAC desc ;
    Si tu veux les 20 dernières dates avec du chiffre, il faut que je cherches un peu ... Le RowNum est malheuresement invalide si tu as un order By ...
    Arf, tu as raison...
    J'en perds mon latin, là...

  5. #5
    Membre expérimenté
    Avatar de Frank
    Homme Profil pro
    Chef de projet Informatique
    Inscrit en
    Avril 2002
    Messages
    1 095
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Chef de projet Informatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 095
    Points : 1 392
    Points
    1 392
    Par défaut Re: [ORACLE]20 dernières dates de facturation
    Citation Envoyé par Médiat
    Citation Envoyé par Xo
    Si tu veux les 20 dernières dates avec du chiffre, il faut que je cherches un peu ... Le RowNum est malheuresement invalide si tu as un order By ...
    Tu peux contourner ce problème

  6. #6
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut Re: [ORACLE]20 dernières dates de facturation
    Citation Envoyé par Médiat
    Tu peux contourner ce problème
    Si tu as la solution, ne nous fait pas languir

    ce soir, je suis fatigué, je vais me rentrer alors je te laisse la main
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  7. #7
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT DateFac
    FROM (SELECT DateFac 
          FROM MaTableDeVente 
          ORDER BY DateFac DESC)
    WHERE ROWNUM <= 20
    S'il y a risque pour que la même date soit répétée, est-ce que tu veux les 20 dernières avec répétition ou les 20 dernières dates distinctes ?
    Dans le deuxième cas, il faudrait modifier un peu la requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT DateFac
    FROM (SELECT DISTINCT DateFac 
          FROM MaTableDeVente 
          ORDER BY DateFac DESC)
    WHERE ROWNUM <= 20
    Il est aussi possible de le faire avec une requête normée (sans ROWNUM) avec une auto-jointure...
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  8. #8
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Je me suis permis de rajouter un DISTINCT dans la sous-requête, non ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT DateFac
    FROM (SELECT DISTINCT DateFac 
          FROM MaTableDeVente 
          ORDER BY DateFac DESC)
    WHERE ROWNUM <= 20
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  9. #9
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Xo, pendant que tu rajoutais le DISTINCT, j'ai complété ma réponse, dans le même sens
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  10. #10
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Citation Envoyé par Médiat
    j'ai complètée ma réponse
    Vu, c'est du real-time ce soir

    @+
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  11. #11
    Membre expérimenté
    Avatar de Frank
    Homme Profil pro
    Chef de projet Informatique
    Inscrit en
    Avril 2002
    Messages
    1 095
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Chef de projet Informatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 095
    Points : 1 392
    Points
    1 392
    Par défaut

    Super les gars !

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 25/03/2006, 16h09
  2. Réponses: 9
    Dernier message: 16/03/2006, 16h39
  3. [SQL-Oracle] moyenne de date
    Par fdraven dans le forum Oracle
    Réponses: 4
    Dernier message: 24/11/2005, 07h31
  4. [oracle 9i ] verification date
    Par jejam dans le forum Oracle
    Réponses: 2
    Dernier message: 20/10/2005, 11h44
  5. Equivalent à TRUNC ou ROUND d'Oracle sur les Dates ?
    Par swirtel dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 25/05/2005, 09h45

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