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 :

Aide sur requête


Sujet :

Langage SQL

  1. #1
    Membre régulier Avatar de omen123
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Septembre 2015
    Messages
    370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2015
    Messages : 370
    Points : 109
    Points
    109
    Par défaut Aide sur requête
    bonjour les amis

    Je voudrai faire ressortir la derniere date affectation de mon portefeuille sur une requete avec les condition suivante :

    Si des interruptions existent dans les dates, prendre la date d'entrée

    sinon prendre la date min direct

    les champ que j'utilise sont :

    CLT & DATEF , la table est nommée :dateaffec . j'ai fais le code suivant :

    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
    22
    23
    24
    WITH DateEntries AS (
        SELECT 
            CLT,
            datef,
            LAG(datef) OVER (PARTITION BY CLT ORDER BY datef) AS PrevDate
        FROM 
            DATEAFFEC
    ),
    Interruptions AS (
        SELECT 
            CLT,
            datef,
            PrevDate,
            IIF(DATEDIFF("m", PrevDate, datef) > 1, 1, 0) AS IsInterrupted
        FROM 
            DateEntries
    )
    SELECT 
        CLT,
        IIF(SUM(IsInterrupted) > 0, MIN(datef), MAX(datef)) AS DerniereDateEntree
    FROM 
        Interruptions
    GROUP BY 
        CLT;
    ca me donne erreur ,j'arrive pas a la localiser .

    merci d 'avance
    Aux incompétents je dis merci ,grâce à vous je progresse !

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 266
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 266
    Points : 8 564
    Points
    8 564
    Billets dans le blog
    17
    Par défaut
    Donne le DDL de ta table.
    Donne un échantillon de données significatif et le résultat attendu.
    Avec ça on devrait pouvoir t'aider
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  3. #3
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 388
    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 388
    Points : 39 906
    Points
    39 906
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    De ce que je comprends, si pour un CLT (client ?) les dates ne sont pas contiguës, alors on récupère la date la plus petite, sinon la date la plus grande.

    A priori, on est sur SQL server (il est préférable de préciser le SGBD, car les fonctions date différent d'un SGBD à l'autre), auquel cas ce genre de requête est possible :

    Code SQL : 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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    with DATEAFFEC (CLT, DATEF) as
        (select 001, cast('2024-01-02' as date)   union all 
         select 001, cast('2024-01-03' as date)   union all 
         select 001, cast('2024-01-05' as date)   union all
         select 002, cast('2024-01-02' as date)   union all
         select 002, cast('2024-01-03' as date)   union all
         select 002, cast('2024-01-04' as date)   union all
         select 003, cast('2024-01-05' as date)   union all
         select 003, cast('2024-01-06' as date)   union all
         select 004, cast('2024-01-02' as date)
        )
       , LAGDATE (CLT, DATEF, PREVDATE) as
        (select CLT
              , DATEF
              , LAG(DATEF) 
                over(partition by CLT order by DATEF)
         from DATEAFFEC
        )
       , ECARTS (CLT, DATEF, ECA) as
        (select CLT
              , DATEF
             , datediff(day, PREVDATE, DATEF)
         from LAGDATE main
        )
    select CLT
         , min(DATEF)
    from ECARTS EC1
    where exists
        (select 1 
         from ECARTS EC2
         where EC2.CLT=EC1.CLT
           and EC2.ECA>1
        )
    group by CLT
    union all
    select CLT
         , max(DATEF)
    from ECARTS EC1
    where not exists
        (select 1 
         from ECARTS EC2
         where EC2.CLT=EC1.CLT
           and EC2.ECA>1
        )
    group by CLT
    order by CLT

  4. #4
    Membre régulier Avatar de omen123
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Septembre 2015
    Messages
    370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2015
    Messages : 370
    Points : 109
    Points
    109
    Par défaut
    RE bonjour ,

    j'utuilse access et je viens de comprerzdre que access ne supporte pas bcp de fonctionnalité de sql . d'apres quelque recherche je dois le faire en code VBA .

    je suis tourjours en train de chercher .

    merci.

    PS : la base en piece jointe
    Fichiers attachés Fichiers attachés
    Aux incompétents je dis merci ,grâce à vous je progresse !

  5. #5
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 266
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 266
    Points : 8 564
    Points
    8 564
    Billets dans le blog
    17
    Par défaut
    Ton fichier est un binaire inexploitable. Donne un dump SQL.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

Discussions similaires

  1. [AC-2007] Besoin d'aide sur une rêqute sur "Like" et la Date
    Par Jiben59 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 17/01/2018, 16h29
  2. [CR] besoin d'aide sur les formules
    Par GuillaumeDSA dans le forum Formules
    Réponses: 4
    Dernier message: 10/07/2003, 13h19
  3. Réponses: 2
    Dernier message: 27/02/2003, 02h33
  4. [Kylix] Aide sur BitBlt
    Par mic006 dans le forum EDI
    Réponses: 1
    Dernier message: 10/12/2002, 23h54
  5. Aide sur une fenetre
    Par Ray-j dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 29/11/2002, 09h51

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