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 - "Les derniers rapports"


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    424
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2004
    Messages : 424
    Par défaut Requête SQL - "Les derniers rapports"
    Bonjour,

    Dans le cadre d'une gestion de prospection, j'ai une table RAPPORT liée à une table INTERLOCUTEUR ( 1,1 1,n ). Je voudrais afficher le dernier rapport par INTERLOCUTEUR ( le dernier étant celui qui a la date la plus éloignée. )
    Savez vous comment faire. Sur access, il y a l'instruction sql last, avec un group by ca marche bien, mais il semble que sur sql server ca ne fonctionne pas.

    Merci d'avance.

  2. #2
    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 : 44
    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
    Par défaut
    Bonjour,

    Essayez :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT I.NomInterlocuteur,
    		MAX(R.DateRapport) AS DernierRapport
    FROM dbo.RAPPORT AS R
    JOIN dbo.INTERLOCUTEUR AS I ON R.IDInterlocuteur = I.IDInterlocuteur
    GROUP BY I.NomInterlocuteur
    pour obtenir la date la plus récente, et :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT I.NomInterlocuteur,
    		MIN(R.DateRapport) AS DernierRapport
    FROM dbo.RAPPORT AS R
    JOIN dbo.INTERLOCUTEUR AS I ON R.IDInterlocuteur = I.IDInterlocuteur
    GROUP BY I.NomInterlocuteur
    pour obtenir la date de publication du 1er rapport.

    Prenez l'habitude de donner la structure complète de vos tables

    @++

  3. #3
    Membre éclairé
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    424
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2004
    Messages : 424
    Par défaut
    Merci de votre réponse, je vais essayer

  4. #4
    Membre éclairé
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    424
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2004
    Messages : 424
    Par défaut
    Merci, mais je ne comprends pas comment faire pour afficher l'identifiant du rapport, en meme temps que la date et le nom interlocuteur. Dans ce cas, apparemment, je ne peux pas faire un group by seulement sur l'interlocuteur.

  5. #5
    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 : 44
    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
    Par défaut
    Dans ce cas, apparemment, je ne peux pas faire un group by seulement sur l'interlocuteur.
    Malheureusment non.
    En revanche, si les dates de publication des rapports sont uniques pour tout interlocuteur (le couple {date de publication, interlocuteur} est unique), vous pouvez écrire :

    Dès SQL Server 2005 :

    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
    ;WITH
    	CTE_DATE_PUBLICATION AS
    	(
    		SELECT I.NomInterlocuteur,
    				MAX(R.DateRapport) AS DernierRapport
    		FROM dbo.RAPPORT AS R
    		JOIN dbo.INTERLOCUTEUR AS I ON R.IDInterlocuteur = I.IDInterlocuteur
    		GROUP BY I.NomInterlocuteur
    	)
    SELECT P.NomInterlocuteur,
    		P.DernierRapport,
    		R.IDRapport
    FROM CTE_DATE_PUBLICATION AS P
    JOIN dbo.RAPPORT AS R
    	ON P.DateRapport = R.DateRapport
    	AND P.IDInterlocuteur = R.IDInterlocuteur
    Et dès SQL Server 2000 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT P.NomInterlocuteur,
    		P.DernierRapport,
    		R.IDRapport
    FROM 
    (
    	SELECT I.NomInterlocuteur,
    			MAX(R.DateRapport) AS DernierRapport
    	FROM dbo.RAPPORT AS R
    	JOIN dbo.INTERLOCUTEUR AS I ON R.IDInterlocuteur = I.IDInterlocuteur
    	GROUP BY I.NomInterlocuteur
    ) AS P
    JOIN dbo.RAPPORT AS R
    	ON P.DateRapport = R.DateRapport
    	AND P.IDInterlocuteur = R.IDInterlocuteur
    @++

Discussions similaires

  1. [Toutes versions] Requête SQL avec Simples et Doubles Quotes
    Par Roums dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 25/03/2010, 11h00
  2. Requête SQL : Afficher les colonnes en ligne, et vice versa
    Par paflolo dans le forum Langage SQL
    Réponses: 7
    Dernier message: 17/03/2009, 10h16
  3. requêtes SQL avec les arbres algébrique
    Par amazircool dans le forum Langage SQL
    Réponses: 2
    Dernier message: 07/03/2007, 01h04
  4. Récupérer grâce à une requête SQL que les champs modifiés
    Par guigui11 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 29/08/2006, 10h58
  5. 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

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