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 :

query qui compte les jours


Sujet :

SQL Oracle

  1. #1
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    446
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2006
    Messages : 446
    Par défaut query qui compte les jours
    moi j'ai cree cette query:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select  cod_fisc, data_ingr, data_dim, lead(data_ingr,'1') over (partition by cod_fisc order by data_dim) data_ingr_succ, h.descr
    from sdo s, drg_2009 d, reparti_hsp h
    where  s.cod_drg=d.cod_drg and s.rep_ingr=h.cod_rep and (cat_1 = 'F0' or cat_1='F00') and d.tipo_drg ='M' and anno='2008'
    comment je fais pour calculer les jour qui passent entre la date dim et la data_ingr_succ?

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Classiquement, avec une soustraction !

  3. #3
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    446
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2006
    Messages : 446
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Classiquement, avec une soustraction !
    oui je suis arrivéee... merci mais le probleme est que je dois sortir seulement les rentrée <30j

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select  cod_fisc, data_ingr, data_dim, lead(data_ingr,'1') over (partition by cod_fisc order by data_dim) data_ingr_succ, To_Number((lead(data_ingr,'1') over (partition by cod_fisc order by data_dim) - s.DATA_INGR)) as jour , h.descr
    from report_sdo s, drg_2009 d, reparti_hsp h
    where  s.cod_drg=d.cod_drg and s.rep_ingr=h.cod_rep and (cat_1 = 'F0' or cat_1='F00') and d.tipo_drg ='M' and anno='2008'

    comment je fais a mettre dans le where que jour > 30?

  4. #4
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    Citation Envoyé par Daniela Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ... lead(...) over (partition by...

    comment je fais a mettre dans le where que jour > 30?
    et bien tu employes une sous-requête, il n'est pas possible d'avoir "lead" dans la clause where

  5. #5
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    446
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2006
    Messages : 446
    Par défaut
    Citation Envoyé par laurentschneider Voir le message
    et bien tu employes une sous-requête, il n'est pas possible d'avoir "lead" dans la clause where
    comment je fais a faire une sous query?

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    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
    21
    SELECT * FROM
    (
    SELECT
        cod_fisc,
        data_ingr,
        data_dim,
        lead(data_ingr,'1') over (partition BY cod_fisc ORDER BY data_dim) as data_ingr_succ,
        lead(data_ingr,'1') over (partition BY cod_fisc ORDER BY data_dim) - s.DATA_INGR AS jour,
        h.descr
    FROM
        report_sdo s
        INNER JOIN drg_2009 d
          ON d.cod_drg = s.cod_drg
        INNER JOIN reparti_hsp h
          ON h.cod_rep = s.rep_ingr
    WHERE
        cat_1 IN ('F0', 'F00')
    AND d.tipo_drg = 'M'
    AND anno = '2008'
    )
    WHERE jour > 30
    Pas besoin de faire un to_number, la différence entre deux dates retourne déjà un numérique.

  7. #7
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    446
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2006
    Messages : 446
    Par défaut
    merci merci marche tres bien...

    Citation Envoyé par Waldar Voir le message
    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
    21
    SELECT * FROM
    (
    SELECT
        cod_fisc,
        data_ingr,
        data_dim,
        lead(data_ingr,'1') over (partition BY cod_fisc ORDER BY data_dim) as data_ingr_succ,
        lead(data_ingr,'1') over (partition BY cod_fisc ORDER BY data_dim) - s.DATA_INGR AS jour,
        h.descr
    FROM
        report_sdo s
        INNER JOIN drg_2009 d
          ON d.cod_drg = s.cod_drg
        INNER JOIN reparti_hsp h
          ON h.cod_rep = s.rep_ingr
    WHERE
        cat_1 IN ('F0', 'F00')
    AND d.tipo_drg = 'M'
    AND anno = '2008'
    )
    WHERE jour < 30
    Pas besoin de faire un to_number, la différence entre deux dates retourne déjà un numérique.

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

Discussions similaires

  1. [XL-2000] Macro qui compte les valeurs distinctes
    Par wyzer dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/07/2010, 10h40
  2. Gadget side bar, qui compte les jours
    Par gkhan dans le forum Windows Vista
    Réponses: 2
    Dernier message: 15/12/2008, 20h40
  3. macro Excel qui compte les lignes
    Par FreddyNB dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/07/2008, 17h15
  4. macro Excel qui compte les lignes
    Par FreddyNB dans le forum VB.NET
    Réponses: 2
    Dernier message: 08/07/2008, 17h11
  5. Requête qui prenne en compte les jours ouvrés
    Par vallica dans le forum Requêtes
    Réponses: 2
    Dernier message: 10/07/2006, 13h59

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