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 :

Date et fréquence


Sujet :

SQL Oracle

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Avril 2005
    Messages : 127
    Points : 49
    Points
    49
    Par défaut Date et fréquence
    Bonjour,

    J'ai une table qui contient une date et une fréquence (un nombre).
    Je souhaiterai créer une vue qui contienne les occurrences de la table dont
    la date + x * fréquence = sysdate.

    Par exemple
    date = 26/06/2012
    frequence = 2

    Aujourd'hui devrait apparaître cette occurrence, ainsi que dans 2/4/6... jours

    Auriez vous une idée de comment construire cette requête ?

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Citation Envoyé par @po©alypse Voir le message
    Aujourd'hui devrait apparaître cette occurrence, ainsi que dans 2/4/6... jours
    Jusqu'où ? vers l'infini et au delà ?
    Un exemple avec 9, est ce que c'est bien ça que tu souhaites ?
    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
    SQL>   with t as (
      2  select to_date('26/06/2012','dd/mm/yyyy') as dt, 2 as freq from dual union all
      3  select to_date('26/06/2012','dd/mm/yyyy') as dt, 5 as freq from dual union all
      4  select to_date('20/06/2012','dd/mm/yyyy') as dt, 5 as freq from dual union all
      5  select to_date('22/06/2012','dd/mm/yyyy') as dt, 3 as freq from dual
      6  ),
      7     gen as (
      8  select level as lvl from dual connect by level < 10
      9  )
     10  select *
     11    from t
     12   cross join gen
     13   where trunc(dt+lvl*freq) = trunc(sysdate);
     
    DT             FREQ        LVL
    -------- ---------- ----------
    26/06/12          2          1
    22/06/12          3          2
     
    SQL>

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Avril 2005
    Messages : 127
    Points : 49
    Points
    49
    Par défaut
    Je me suis peut être mal expliqué.

    Dans une table j'ai des enregistrements, une colonne date et une colonne fréquence.

    Je veux créer une vue qui me récupère les enregistrements de la précédente table où la colonne date + x * fréquence tombe aujourd'hui.

    Donc si la date est 26/06/2012 et que la fréquence est 2 pour une enregistrement. Aujourd'hui la vue devrait me donner cet enregistrement.
    Cependant demain il ne sera pas visible par la vue.

    La vue devrait me ressortir cet enregistrement tous les 2 jours à partir du 26.
    Le 27/06/2012 la vue n'affiche pas l'enregistrement.
    Le 28/06/2012 la vue affiche l'enregistrement.
    Le 29/06/2012 la vue n'affiche pas l'enregistrement.
    Le 30/06/2012 la vue affiche l'enregistrement.

    Sachant que je n'ai pas la main sur la fréquence, cela peut être 1 comme 250.

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    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 080
    Points : 30 778
    Points
    30 778
    Par défaut
    Quelque chose comme MOD((TRUNC(SYSDATE) - madate, frequence) = 0 ?
    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.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Avril 2005
    Messages : 127
    Points : 49
    Points
    49
    Par défaut
    Citation Envoyé par al1_24 Voir le message
    Quelque chose comme MOD((TRUNC(SYSDATE) - madate, frequence) = 0 ?
    Je ne sais pas du tout d'où ma question .
    Je vais essayer cela merci.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Avril 2005
    Messages : 127
    Points : 49
    Points
    49
    Par défaut
    Merci...
    Je n'avais pas du tout pensé au Modulo pensant que cela ne passerait pas sur une date...

  7. #7
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 814
    Points
    17 814
    Par défaut
    Citation Envoyé par @po©alypse Voir le message
    Merci...
    Je n'avais pas du tout pensé au Modulo pensant que cela ne passerait pas sur une date...
    Pour être précis, le modulo ne travaille pas sur la date.
    La différence entre deux dates retourne un nombre de jours.

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

Discussions similaires

  1. [XL-2010] Faire un modulo avec une date (Fréquence) sur un calendrier
    Par TTAM54 dans le forum Excel
    Réponses: 2
    Dernier message: 01/04/2015, 09h01
  2. Calcul de date future depuis date de depart + fréquence
    Par Math8857 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 04/08/2011, 16h21
  3. Generation d'evenements a une date precise
    Par pascalzzz dans le forum MFC
    Réponses: 2
    Dernier message: 04/06/2002, 16h21
  4. Réponses: 3
    Dernier message: 06/05/2002, 19h24
  5. Réponses: 3
    Dernier message: 19/04/2002, 01h11

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