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 requête SQL sous SQL server 2008


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 221
    Par défaut Aide requête SQL sous SQL server 2008
    Bonjour je suis sous sql serveur et j'ai un énorme problème. En effet j'ai une table comme celle ci-dessous;

    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
    FCURR   TCURR     KURST      DATE
    ----------------------------------
    AED   |  EUR |    EURX |2001-01-01 00:00:00.000  
    ARS   |  EUR |    EURX |2001-01-01 00:00:00.000
    ATS   |  EUR |    EURX |1800-01-01 00:00:00.000
    ATS   |  EUR |    EURX |1800-01-01 00:00:00.000
    AUD   |  EUR |    EURX |2010-11-29 00:00:00.000
    AUD   |  EUR |    EURX |2001-01-01 00:00:00.000
    AUD   |  EUR |    EURX |2010-11-30 00:00:00.000
    AUD   |  EUR |    EURX |2010-11-30 10:10:00.000
    AUD   |  EUR |    EURX |2010-11-02 00:00:00.000
    AUD   |  EUR |    EURX |2010-11-03 00:00:00.000
    AUD   |  EUR |    EURX |2010-11-05 00:00:00.000 
    AUD   |  EUR |    EURX |2010-01-01 00:00:00.000
    Pour chaque groupe composé par (FCURR,TCURR,KURST) je voudrais récupérer la max_date, par exemple pour le triplet:
    1. 1 (AUD ,EUR, EURX) je ne voudrais que la ligne en gras à savoir AUD | EUR | EURX |2010-11-30 00:00:00.000 et supprimer les autres.


    Donc en quelque sorte ce que je voudrais c'est remplacer tous les doublons (FCURR,TCURR,KURST) et les remplacer par une seule ligne (FCURR,TCURR,KURST) avec DATE=MAX_DATE .

    Merci

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Qu'as-tu essayé comme requête ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 221
    Par défaut
    Ça y est j'ai trouvé la solution. Pour ceux que ca intéresse:
    • 1- Créer une table temporaire dans laquelle on récupère la date max et on effectue un group by sur les autres champs.

      Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      select MANDT, FCURR, TCURR,KURST ,max(GDATU)AS MAX_GDATU
      from  dbo.C_SAP_TCURR TCURR
      group by MANDT, KURST, FCURR, TCURR

      2-Faire ensuite la jointure entre la table principale et cette dernière.
      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
       
      select TCURR.*  
       
      from 
       
      dbo.C_SAP_TCURR TCURR, 
       
      (select MANDT, FCURR, TCURR,KURST ,max(GDATU)AS MAX_GDATU
      from  dbo.C_SAP_TCURR TCURR
      group by MANDT, KURST, FCURR, TCURR
      )SMAX
       
      where 
       
       TCURR.MANDT=SMAX.MANDT and 
       TCURR.FCURR=SMAX.FCURR and
       TCURR.TCURR=SMAX.TCURR and 
       TCURR.KURST=SMAX.KURST and 
       TCURR.GDATU=SMAX.MAX_GDATU and 
       TCURR.TCURR='EUR'

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

Discussions similaires

  1. Requête longue sous SQL 2008 R2
    Par fdenis31 dans le forum Administration
    Réponses: 18
    Dernier message: 29/02/2012, 10h10
  2. pb avec requête UPDATE sous SQL 2008
    Par tibofo dans le forum Développement
    Réponses: 6
    Dernier message: 22/01/2011, 21h20
  3. Requête SQL sous SQL SERVER
    Par squalito dans le forum Langage SQL
    Réponses: 1
    Dernier message: 01/05/2008, 11h18
  4. requete sql sous sql server 2000
    Par lamyae_84 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 20/04/2007, 18h59
  5. Concatenation de 2 entiers en SQL (sous SQL Server)
    Par emazes dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 02/08/2005, 09h28

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