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 :

Première date non discontinue contenant une donnée


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 31
    Points : 22
    Points
    22
    Par défaut Première date non discontinue contenant une donnée
    Bonjour,

    je souhaite récupérer la première date qui contient une donnée (objet "A") sans changement.

    Voici la Table;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    date     objet
    17/01     A
    18/01     A
    19/01     B
    20/01     A
    21/01     A
    22/01     A
    Je voudrai que la requête me retourne comme date le 20/01 car avant il y a eu un changement.

    Pouvez-vous m'aider ?

    Je vous en remercie par avance.

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 135
    Points : 38 560
    Points
    38 560
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    la solution peut varier en fonction du SGBD, quel est le votre ?

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 768
    Points : 52 577
    Points
    52 577
    Billets dans le blog
    5
    Par défaut
    Utilisez les fonctions de fenêtrage LEAD ou LAG

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 31
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    Bonjour,

    la solution peut varier en fonction du SGBD, quel est le votre ?
    Bonjour escartefigue

    J'ai en effet omis de le mentionner.

    C'est Microsoft SQL server.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 31
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Utilisez les fonctions de fenêtrage LEAD ou LAG

    A +
    Bonjour SQLpro,

    j'ai regardé de ce côté mais il est vrai que au delà de mon niveau.

  6. #6
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 135
    Points : 38 560
    Points
    38 560
    Billets dans le blog
    9
    Par défaut
    ou un test d'existence

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT T1.COL_DAT                                
         , T1.COL_OBJ                                
    FROM MA_TABLE T1                                    
    WHERE T1.COL_DAT =                               
         (SELECT MIN (COL_DAT)                       
          FROM MA_TABLE T2                              
          WHERE T2.COL_OBJ = T1.COL_OBJ               
            AND NOT EXISTS                          
               (SELECT 1                            
                FROM MA_TABLE T3                        
                WHERE T3.COL_DAT > T2.COL_DAT         
                  AND T3.COL_OBJ<> T2.COL_OBJ))

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 768
    Points : 52 577
    Points
    52 577
    Billets dans le blog
    5
    Par défaut
    Soit la table et les données suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE TABLE MaTable (une_date DATE, un_objet CHAR(1))
     
    INSERT INTO MaTable VALUES
    ('2017-01-17', 'A'),
    ('2017-01-15', 'A'),
    ('2017-01-19', 'B'),
    ('2017-01-20', 'A'),
    ('2017-01-21', 'A'),
    ('2017-01-22', 'A');
    Une solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    WITH T AS (
    SELECT une_date, un_objet, LEAD(un_objet) OVER(ORDER BY une_date DESC) AS AVANT
    FROM   MaTable)
    SELECT MAX(une_date)
    FROM   T
    WHERE  un_objet <> AVANT;
    la prochaine fois respectez la charte de postage : http://www.developpez.net/forums/a69...gage-sql-lire/
    Cela évitera de faire perdre du temps à tous, y compris vous même !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. date de modification d'une donnée dans la base
    Par Lucator dans le forum Contribuez
    Réponses: 21
    Dernier message: 25/07/2014, 23h17
  2. [XL-2007] recherche première cellule non vide dans une ligne
    Par tigrou530 dans le forum Excel
    Réponses: 3
    Dernier message: 23/02/2012, 13h21
  3. Constante chaine non terminée sur une donnée issue d'un flux RSS
    Par identifiant_bidon dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 29/07/2011, 10h01
  4. comment retrouver les colonnes contenant une donnée precise
    Par monthaldo dans le forum Administration
    Réponses: 3
    Dernier message: 27/12/2007, 17h40
  5. Chercher la non présence d'une donnée
    Par jeremy13 dans le forum Langage SQL
    Réponses: 8
    Dernier message: 25/11/2007, 19h56

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