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

MS SQL Server Discussion :

[SQL2005] group by et max(date)


Sujet :

MS SQL Server

  1. #1
    Membre averti Avatar de BOUBOU81
    Profil pro
    system integrator
    Inscrit en
    Juin 2004
    Messages
    358
    Détails du profil
    Informations personnelles :
    Localisation : Allemagne

    Informations professionnelles :
    Activité : system integrator

    Informations forums :
    Inscription : Juin 2004
    Messages : 358
    Points : 315
    Points
    315
    Par défaut [SQL2005] group by et max(date)
    Bonjour à tous voilà mon problème :
    j'ai une table qui est un peu comme ceci

    Nom Quantité Date Heure
    DEDE 10 22/10/2006 10:40:30
    DUDU 20 23/10/2006 11:00:00
    DEDE 5 25/10/2006 09:00:00

    et je voudrai une requête qui me ressorte ceci

    Nom Quantité Date Heure
    DUDU 20 23/10/2006 11:00:00
    DEDE 5 25/10/2006 09:00:00

    Que le dernier enregistrement de chaque nom et oublié les autres.
    c'est à dire la plus grande date et heure de chaque nom.

    Je ne sais pas si j'ai été clair et si mon exemple est compréhensible,mais il y t-il un moyen de faire ceci?

    Merci d'avance
    Boubou from The SpAcE GaLaXy....
    AhAhAhAhAh

  2. #2
    Membre habitué
    Inscrit en
    Mars 2004
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 126
    Points : 151
    Points
    151
    Par défaut
    salut.
    Code testé sous SQL SERVER 2005
    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
     
    declare @t TABLE( Nom Char(1), Qtte Int, DateD DateTime )
    insert @t values( 'A', 10, Convert(datetime, '31/12/2006',103) )
    insert @t values( 'A', 15, Convert(datetime, '12/12/2006' ,103) )
    insert @t values( 'A', 1, Convert(datetime, '17/12/2006' ,103) )
    insert @t values( 'B', 2, Convert(datetime, '10/12/2006',103) )
    insert @t values( 'B', 14, Convert(datetime, '25/12/2006' ,103) )
    insert @t values( 'C', 15, Convert(datetime, '28/12/2006',103) )
    insert @t values( 'C', 1, Convert(datetime, '31/12/2006',103) )
    insert @t values( 'D', 1, Convert(datetime, '31/12/2006',103) )
     
    select x.*
      from @t x
      inner join (
        select a.Nom, a.DateD, Count(*) n
          from @t A
          left join @t b
            on ( b.Nom = a.Nom ) and
                ( b.DateD >= a.DateD )
          group by a.Nom, a.DateD
          having ( Count(*) <= 1 )
      ) y
        on ( y.Nom = x.Nom ) and
            ( y.DateD = x.DateD )

  3. #3
    Membre averti Avatar de BOUBOU81
    Profil pro
    system integrator
    Inscrit en
    Juin 2004
    Messages
    358
    Détails du profil
    Informations personnelles :
    Localisation : Allemagne

    Informations professionnelles :
    Activité : system integrator

    Informations forums :
    Inscription : Juin 2004
    Messages : 358
    Points : 315
    Points
    315
    Par défaut
    Merci beaucoup ça a l'air de fonctionné impec.
    Boubou from The SpAcE GaLaXy....
    AhAhAhAhAh

  4. #4
    Membre habitué Avatar de Poisson59
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    213
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 213
    Points : 140
    Points
    140
    Par défaut
    Encore plus Simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    declare @t TABLE( Nom Char(1), Qtte Int, DateD DateTime )
    INSERT @t VALUES( 'A', 10, Convert(datetime, '31/12/2006',103) )
    INSERT @t VALUES( 'A', 15, Convert(datetime, '12/12/2006' ,103) )
    INSERT @t VALUES( 'A', 1, Convert(datetime, '17/12/2006' ,103) )
    INSERT @t VALUES( 'B', 2, Convert(datetime, '10/12/2006',103) )
    INSERT @t VALUES( 'B', 14, Convert(datetime, '25/12/2006' ,103) )
    INSERT @t VALUES( 'C', 15, Convert(datetime, '28/12/2006',103) )
    INSERT @t VALUES( 'C', 1, Convert(datetime, '31/12/2006',103) )
    INSERT @t VALUES( 'D', 1, Convert(datetime, '31/12/2006',103) )
     
    select T1.* from @t T1
    JOIN
    (select Nom, max(DateD) as maxi from @t group by Nom) T2
    on T1.Nom = T2.Nom and T1.DateD = T2.maxi
    La connaissance n'est rien sans celles des autres !!!

  5. #5
    Membre averti Avatar de BOUBOU81
    Profil pro
    system integrator
    Inscrit en
    Juin 2004
    Messages
    358
    Détails du profil
    Informations personnelles :
    Localisation : Allemagne

    Informations professionnelles :
    Activité : system integrator

    Informations forums :
    Inscription : Juin 2004
    Messages : 358
    Points : 315
    Points
    315
    Par défaut
    Ah oui effectivement merci beaucoup
    Boubou from The SpAcE GaLaXy....
    AhAhAhAhAh

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

Discussions similaires

  1. MAX(date) et GROUP BY Day(date)
    Par Dev@lone dans le forum Requêtes
    Réponses: 25
    Dernier message: 30/05/2012, 14h34
  2. mysql max date group by
    Par legend79 dans le forum Requêtes
    Réponses: 18
    Dernier message: 10/04/2012, 14h44
  3. Max Date et Group by
    Par Jackola dans le forum SQL
    Réponses: 2
    Dernier message: 30/11/2010, 14h37
  4. Select sum(Poids) sur max(date) group by adr
    Par olibara dans le forum Requêtes
    Réponses: 2
    Dernier message: 15/04/2009, 18h12
  5. Somme Group by et Max date
    Par mamiberkof dans le forum Langage SQL
    Réponses: 5
    Dernier message: 03/04/2008, 16h48

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