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 :

Valeur la plus grande


Sujet :

Développement SQL Server

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2010
    Messages : 42
    Points : 41
    Points
    41
    Par défaut Valeur la plus grande
    Bonjour,

    Je suis quelque peu débutant et même si j'ai un peu fouillé sur le net avant, je n'ai toujours pas trouvé quelque chose correspondant à mes attentes.

    J'ai une table avec les enregistrements de tous les contrats, ceux en cours comme ceux passés, avec dans un champ le num de contrat, ainsi que la version du contrat (il peut y en avoir des dizaines).

    no_contrat / version_contrat
    123456 / 0
    123456 / 1
    123456 / 2
    456789 / 0
    ...
    Je souhaite lier cette table avec une table contenant les noms et numéros de tiers mais je voudrais seulement récupérer les dernières versions de contrat.

    Num_tiers / Nom_tiers / no_contrat
    aze123 / mich / 123456
    poi741 / much / 456789
    J'ai essayé plusieurs requêtes avec des max, top 1 etc mais sans résultats.

    Pourriez vous m'aider ?
    merci d'avance

  2. #2
    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
    Bonjour


    voulez-vous juste obtenir la dernière version du contrat, ou voulez vous aussi récuperer d'autres colonnes de la table contrat, pour le dernier contrat ?

    Edit : si vous le pouvez, postez une ou deux requêtes que vous avez essayez, cela nous aidera à bien comprendre ce que vous voulez au final...

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2010
    Messages : 42
    Points : 41
    Points
    41
    Par défaut
    Bonjour,

    je souhaite obtenir que la dernière version mais pour chaque contrat.
    Dans l'exemple que je donne dans le 1er post, mon résultat aurait été :
    123456 / 2
    456789 / 0

    1ere tentative :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select cv.NO_contrat, cv.version_contrat, ct.CODE_STATUT, ct.CODE_TYPECNT
    from CONTRAT_VAR cv
    left join CONTRAT ct on ct.NO_CONTRAT = cv.NO_CONTRAT
    and cv.VERSION_CONTRAT = (select max(VERSION_CONTRAT) from CONTRAT_VAR)
    mais la, ça ne me revoit qu'une seule ligne avec le contrat qui a la version la plus haute

    2éme tentative :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    select A.NO_contrat, A.version_contrat, ct.CODE_STATUT, ct.CODE_TYPECNT
    from (select NO_contrat, version_contrat
    		from CONTRAT_VAR
    		group by NO_contrat, version_contrat) A
    left join CONTRAT ct on ct.NO_CONTRAT = A.NO_CONTRAT
    mais la ça me sélection tous les contrats et toutes les versions...

  4. #4
    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
    Dans votre premiere requete, votre sous requete renvoi le max tous contrats confondus

    Dans la deuxième, votre pseudo table reprend toutes les versions, alors que vous ne voulez que la dernière

    à partir votre deuxième requête, on peut faire :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT A.NO_contrat, A.version_contrat, ct.CODE_STATUT, ct.CODE_TYPECNT
    FROM (
    	SELECT NO_contrat, MAX(version_contrat) AS VERSION_CONTRAT
    	FROM CONTRAT_VAR
    	GROUP BY NO_contrat
    ) A
    LEFT JOIN CONTRAT ct ON ct.NO_CONTRAT = A.NO_CONTRAT

    on pourrait aussi faire :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT
    	C.NO_CONTRAT,
    	MAX(V.VERSION_CONTRAT) AS LastVersion,
    	C.CODE_STATUT,
    	C.CODE_TYPECNT
    FROM CONTRAT C
    LEFT OUTER JOIN CONTRAT_VAR V ON C.NO_CONTRAT = V.NO_CONTRAT
    GROUP BY C.NO_CONTRAT,C.CODE_STATUT,C.CODE_TYPECNT

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2010
    Messages : 42
    Points : 41
    Points
    41
    Par défaut
    Merci beaucoup pour votre aide aieeeuuuuu, ça a l'air d'être parfait

    Bonne journée a vous

  6. #6
    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
    De rien !

    bonne journée également

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

Discussions similaires

  1. Déterminer la Valeur la plus grande dans une table
    Par arnaud_verlaine dans le forum Langage SQL
    Réponses: 9
    Dernier message: 22/08/2014, 23h35
  2. requête pôur sélectionner les 5 valeurs les plus grandes ?
    Par kikidrome dans le forum Langage SQL
    Réponses: 7
    Dernier message: 06/11/2007, 16h29
  3. Réponses: 6
    Dernier message: 04/11/2007, 22h15
  4. c++ valeur la plus grande parmis les valeurs dun tableau
    Par corseb-delete dans le forum C++
    Réponses: 19
    Dernier message: 14/12/2006, 22h14
  5. Réponses: 4
    Dernier message: 29/05/2006, 13h04

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