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

Oracle Discussion :

Requete sans compte les weekend


Sujet :

Oracle

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Maroc

    Informations forums :
    Inscription : Octobre 2005
    Messages : 186
    Points : 159
    Points
    159
    Par défaut Requete sans compte les weekend
    salut tout le monde,
    j'ai besoin d'une requete SQL qui me sorte la date cible a partir d'une date debut + un nombre de jours sans compter les samdedis et dimanches
    exemple

    date_cible=date_deb+10;
    si date_cible=le vendredi 09/03/07 alors
    date_cible=23/03/07

    merci

  2. #2
    Rédactrice

    Avatar de kalyparker
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Janvier 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 327
    Points : 2 998
    Points
    2 998
    Par défaut
    Bonjour,

    Sachant qu'une semaine fait 7 jours, et qu'il n'y a que 5 jours qui t'interesse, en faisant :

    date_cible=date_deb+10+(10/5)*2;

    Normalement ça doit passer.

    [edit] sauf que cela dépend du jour sur lequel tu es.
    A mon avis il faut partir sur un test du jour de depart en utilisant sysdate.
    C'est peux être une piste...
    It isn't that they can't see the solution, it's that they can't see the problem.
    Mes Articles et Traductions (Microstrategy, Css et Javascript)
    Si vous souhaitez contribuer à la rubrique BI, contactez-moi ou tout autre membre de l'équipe BI par MP.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Maroc

    Informations forums :
    Inscription : Octobre 2005
    Messages : 186
    Points : 159
    Points
    159
    Par défaut
    si on la date_deb est egale a un vendredi et au lieu de 10 on 3
    cette formule ne marche plus

  4. #4
    Rédactrice

    Avatar de kalyparker
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Janvier 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 327
    Points : 2 998
    Points
    2 998
    Par défaut
    Ici tu devrais trouver ton bonheur

    http://www.developpez.net/forums/sho...=ajouter+jours
    It isn't that they can't see the solution, it's that they can't see the problem.
    Mes Articles et Traductions (Microstrategy, Css et Javascript)
    Si vous souhaitez contribuer à la rubrique BI, contactez-moi ou tout autre membre de l'équipe BI par MP.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Maroc

    Informations forums :
    Inscription : Octobre 2005
    Messages : 186
    Points : 159
    Points
    159
    Par défaut
    ca marche n'ont plus
    mon besoin c'est d'avoir la date cible. et non le nb de jours ouvrable

  6. #6
    Rédacteur

    Homme Profil pro
    Développeur et DBA Oracle
    Inscrit en
    Octobre 2006
    Messages
    878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur et DBA Oracle

    Informations forums :
    Inscription : Octobre 2006
    Messages : 878
    Points : 1 197
    Points
    1 197
    Par défaut
    Bonjour,

    Le code ci-dessous répond à ta question il me donne les date du 2007-03-09 au 2007-03-22 sans les samedis et dimanches , mais il faut seulement vérifier TO_CHAR (daily_date, 'DY') si te donne 'SAM.' ,'DIM.' sinon tu le changes dans la requette

    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
     
    SELECT   daily_date 
        FROM
        (SELECT l, daily_date, x, y
                FROM (SELECT rn l, daily_date, TRUNC ((rn - 1) / 5) x,
                             MOD (rn - 1, 5) + 1 y
                        FROM (SELECT   TRUNC (TO_DATE (:p_date_debut),
                                              'DD'
                                             )
                                     + x daily_date,
                                     ROWNUM rn
                                FROM (SELECT ROWNUM - 1 x
                                        FROM (SELECT   1
                                                  FROM DUAL
                                              GROUP BY CUBE (1, 1, 1, 1))
                                       WHERE ROWNUM <= 14)))
       WHERE TO_CHAR (daily_date, 'DY') NOT IN ('SAM.', 'DIM.'))

  7. #7
    Rédacteur

    Homme Profil pro
    Développeur et DBA Oracle
    Inscrit en
    Octobre 2006
    Messages
    878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur et DBA Oracle

    Informations forums :
    Inscription : Octobre 2006
    Messages : 878
    Points : 1 197
    Points
    1 197
    Par défaut
    Bonjour,

    Dèsolè mon dernier message affiche les dates à partir de la date début jusqu'à la fin , mais le code suivant te donne uniquement la date cible sans compter les samedis et les dimanches

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    SELECT  max(daily_date)
                        FROM (SELECT   TRUNC (TO_DATE (:p_date_debut),
                                              'DD'
                                             )
                                     + x daily_date,
                                     ROWNUM rn
                                FROM (SELECT ROWNUM - 1 x
                                        FROM (SELECT   1
                                                  FROM DUAL
                                              GROUP BY CUBE (1, 1, 1, 1,1,1,1,1,1,1))
                                       WHERE ROWNUM <= :nb_j+(:nb_j/5)*2))
                 WHERE TO_CHAR (daily_date, 'DY') NOT IN ('SAM.', 'DIM.')
    Remarque : :nb_j : c'est le nombre de jours
    :p_date_debut la date début.

  8. #8
    Rédacteur

    Homme Profil pro
    Développeur et DBA Oracle
    Inscrit en
    Octobre 2006
    Messages
    878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur et DBA Oracle

    Informations forums :
    Inscription : Octobre 2006
    Messages : 878
    Points : 1 197
    Points
    1 197
    Par défaut Remarque
    Bonjour,


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    (SELECT ROWNUM - 1 x
                                        FROM (SELECT   1
                                                  FROM DUAL
                                              GROUP BY CUBE (1, 1, 1, 1,1,1,1,1,1,1)))
    ce code me permet de générer des chiffre de 0 à 1024 mais si tu as besoin seulement 0 à 15 il faut mettre GROUP BY CUBE (1, 1, 1, 1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    (SELECT ROWNUM - 1 x
                                        FROM (SELECT   1
                                                  FROM DUAL
                                              GROUP BY CUBE (1, 1, 1, 1)))

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 03/02/2012, 14h03
  2. Réponses: 1
    Dernier message: 06/08/2008, 12h04
  3. Requete Update ne prend pas en compte les champs paramétrés?
    Par Oceliane dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 08/06/2007, 22h34
  4. Réponses: 4
    Dernier message: 13/04/2007, 17h32
  5. Réponses: 11
    Dernier message: 19/07/2006, 18h28

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