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

Développement SQL Server Discussion :

Requête SQL : Groupement et date max


Sujet :

Développement SQL Server

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Requête SQL : Groupement et date max
    Bonjour,

    Soit la table : id (clef), ch1, ch2, date_maj
    But :
    Récupérer tous les enregistrements [ id, distinct(ch1, ch2), date_maj ] tels que la date_maj est la plus récente pour le couple (ch1, ch2)

    Exemple :
    id ch1 ch2 date_maj
    1 a b 20/12/2010
    2 a b 21/12/2010
    3 a c 20/12/2010
    4 d e 22/12/2010
    5 d e 21/12/2010

    On récupère :
    2 a b 21/12/2010
    3 a c 20/12/2010
    4 d e 22/12/2010

    Bien sûr en 1 seule requête et sur SQL-Server

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 814
    Points
    17 814
    Par défaut
    Et qu'avez-vous essayé ?
    Avez-vous cherché ?

  3. #3
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    quelque chose dans ce gout la peut être :


    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    SELECT MaTable.id, MaTable.ch1, MaTable.ch2, MaTable.date_Maj
    FROM MaTable
    INNER JOIN (
        SELECT ch1, ch2, MAX(date_maj) as max_date_maj
        FROM MaTable
        GROUP BY ch1, ch2
    ) AS tmp (ch1, ch2, max_date_maj)
    ON ( MaTable.ch1 = tmp.ch1
        AND MaTable.ch2 = tmp.ch2
        AND MaTable.date_maj = tmp.max_date_maj)

    Mais je ne vois pas l'intérêt de l'ID dans votre table, et je pense qu'il ne vous servira a rien dans votre résultat. En d'autre termes, je dirai que la sous requete (celle de la pseudo table)devrait vous suffire...

  4. #4
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Ou bien avec une expression de table commune :

    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
    ;WITH
    	CTE AS
    	(
    		 SELECT	ch1
    			, ch2
    			, MAX(date_maj) AS max_date_maj
    		FROM	dbo.maTable
    		GROUP	BY ch1, ch2
    	)
    SELECT		T.id
    		, T.ch1
    		, T.ch2
    		, T.date_maj
    FROM		dbo.maTable AS T
    INNER JOIN	CTE AS C
    			ON T.date_maj = C.max_date_maj
    			AND T.ch1 = C.ch1
    			AND T.ch2 = C.ch2
    @++

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci à vous deux, je vais voir ce que je peux faire avec ces propositions pour adapter à mon cas réel.

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

Discussions similaires

  1. [CR ?] requête SQL sur une date
    Par czezko dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 23/04/2008, 11h25
  2. Requête SQL : récupérer la valeur max
    Par Rodie dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 23/07/2006, 12h28
  3. Requêtes SQL pour les Dates et numériques
    Par Ramage03 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/03/2006, 18h26
  4. [SQL2K] requête SQL, comparer des dates
    Par cortex024 dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 16/03/2006, 15h32
  5. Requête sql regroupement de dates
    Par rocs dans le forum Langage SQL
    Réponses: 1
    Dernier message: 28/07/2005, 17h40

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