Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/11/2010, 11h27   #1
Membre du Club
 
Inscription : juillet 2002
Messages : 154
Détails du profil
Informations forums :
Inscription : juillet 2002
Messages : 154
Points : 40
Points : 40
Envoyer un message via MSN à foxrol
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 :
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
foxrol est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 11h30   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 957
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 10 957
Points : 18 165
Points : 18 165
Envoyer un message via MSN à CinePhil
Qu'as-tu essayé comme requête ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 12h04   #3
Membre du Club
 
Inscription : juillet 2002
Messages : 154
Détails du profil
Informations forums :
Inscription : juillet 2002
Messages : 154
Points : 40
Points : 40
Envoyer un message via MSN à foxrol
Ç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 :
    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 :
    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'
foxrol est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h27.


 
 
 
 
Partenaires

Hébergement Web