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 :

[Oracle9i] Fonctions date


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2004
    Messages
    193
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 193
    Par défaut [Oracle9i] Fonctions date
    bonjour


    j'ai une table ou j'ai des ecritures comptables ou je voulais faire des extractions suivant les dates d'ecritures, je souhaite extraire les lignes suivant la derniere date d'ecriture(max) et la date qui suit juste aprés la derniere date. Par exemple si j'ai trois dates : 01/03/2006, 05/06/2006 et 23/04/2005, je veux tout simplement afficher le deux dates : 05/06/2006 et 01/03/2006.

    Merci de votre aide

  2. #2
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT TRUNC(tadate), COUNT(*)
    FROM TATABLE
    WHERE TRUNC(tadate) >=	(SELECT MAX(TRUNC(tadate))
    			FROM TATABLE
    			WHERE TRUNC(tadate) < (
    					SELECT MAX(TRUNC(tadate))
    					FROM TATABLE
    						)
    			)
    GROUP BY TRUNC(tadate)

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2004
    Messages
    193
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 193
    Par défaut
    je vais essayer d'etre plus clair
    bon la table environs 1500000 lignes, chaque compte a plusieurs mouvements

    donc pour chaque compte je veux extraire uniquement ses deux plus grandes dates d'ecritures

  4. #4
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Pour faire encore plus clair : Donne la description de la structure des données de ta table que tu souhaites ainsi qu'un jeu d'essai d'exemple.

    A priori pour ce que tu veux :
    1/ Fais une fonction qui pour un compte et une date te renvoie la date précédente
    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
    CREATE OR REPLACE FUNCTION f_datefac (p_cpt IN VARCHAR2, p_date IN DATE)
    RETURN DATE
    IS
    v_ret DATE;
    BEGIN
     
    	SELECT MAX(datefact)
    	INTO v_ret
    	FROM TATABLE
    	WHERE compte = p_cpt
    	AND datefact < p_date;
     
    RETURN v_ret;
    END;
    /
    2/ un select groupé par compte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT compte, MAX(datefact) f1, f_datefac (e1.compte, MAX(datefact)) AS f2
    FROM TATABLE e1
    GROUP BY compte

  5. #5
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    LEAD serait bien plus performant

  6. #6
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    J'ai de grosses lacunes en fct analytique,
    Comment tu utiliserais LEAD pour ce cas là ?

    Pour moi le LEAD permet d'afficher dans une colonne d'une ligne X, le resultat d'une colonne de la ligne X-a

  7. #7
    Membre confirmé
    Inscrit en
    Avril 2004
    Messages
    193
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 193
    Par défaut
    Merci je crois que ca marche

Discussions similaires

  1. [Dates] Fonction date
    Par dafalri dans le forum Langage
    Réponses: 18
    Dernier message: 13/12/2005, 11h27
  2. Question de base sur l'utilisation de la fonction date()
    Par deaven dans le forum Langage SQL
    Réponses: 2
    Dernier message: 04/12/2005, 15h33
  3. Som dans form continu en fonction date selectionée dans form
    Par samlepiratepaddy dans le forum Access
    Réponses: 3
    Dernier message: 26/09/2005, 13h05
  4. Fonction Date
    Par marivi dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 18/08/2005, 16h30
  5. Problème avec une fonction date.
    Par kmayoyota dans le forum ASP
    Réponses: 8
    Dernier message: 09/09/2004, 12h33

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