Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Requêtes et SQL.
Requêtes et SQL. Tout ce qui concerne vos questions sur les requêtes et le SQL sous Access se trouve ici.
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 19/05/2011, 09h36   #1
Membre actif
 
Homme Quentin D.
Étudiant
Inscription : avril 2011
Messages : 175
Détails du profil
Informations personnelles :
Nom : Homme Quentin D.
Âge : 25
Localisation : France, Moselle (Lorraine)

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : avril 2011
Messages : 175
Points : 165
Points : 165
Par défaut Sélectionner des dates maximales distinctes

Bonjour à tous,

Je vous expose mon problème :
J'ai 2 tables LOV_Fund et Histo_Fund.
Histo_Fund est composé de deux champs : SC_ID et Date_Nav.
Lov_fund est composé des champs : SC_ID, ISIN, Representative_SC_ID et Updating_BBG.

Je voudrais sélectionner les SC_ID, les ISIN et les DAte_NAV dans les conditions suivantes :

Code :
1
2
3
SELECT LOV_FUND.SC_ID, LOV_FUND.ISIN, HISTO_FUND.Date_NAV
FROM LOV_FUND INNER JOIN HISTO_FUND ON HISTO_FUND.SC_ID = LOV_FUND.SC_ID
WHERE (((LOV_FUND.SC_ID) In (Select SC_ID From LOV_FUND where Updating_BBG=-1 and Representative_SC_ID=SC_ID)))
En fait à partir de là j'aimerais ajouter une condition sur ma date. En effet, j'ai plusieurs dates pour chaque SC_ID, mais je peux avoir des dates max différentes pour les SC_ID, je m'explique par un exemple, j'ai ceci dans HISTO_FUND :

SC_ID, Date_NAV :
445, 01/01/1999
445, 01/01/2000
445, 02/01/2000
446, 10/01/1999
446, 01/01/2000
446, 10/02/2000

Si je fais simplement un :
Code :
AND HISTO_FUND.Date_NAV in (Select Max(Date_NAV) From HISTO_FUND)
A la fin de ma requête j'obtiendrais seulement l'ID 446 avec comme date 10/02/2000, cad : 446, Isin2, 10/02/2000


Mais je voudrais sélectionner les dates max distinctes pour chaque ID. C'est-à-dire obtenir le résultat :

445, ISIN1, 02/01/2000
446, Isin2, 10/02/2000

Comment pourrais-je faire ?

Merci d'avance pour votre aide et vos réponses.
Nitromard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2011, 10h03   #2
Membre actif
 
Homme Quentin D.
Étudiant
Inscription : avril 2011
Messages : 175
Détails du profil
Informations personnelles :
Nom : Homme Quentin D.
Âge : 25
Localisation : France, Moselle (Lorraine)

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : avril 2011
Messages : 175
Points : 165
Points : 165
Rebonjour,

J'ai trouvé une solution qui a l'air de fonctionner mais je ne suis pas sûr qu'elle soit optimale alors je la met ici masi si quelqu'un a une idée pour l'améliorer, je suis preneur !

Merci.

Code :
1
2
3
4
5
6
7
8
SELECT LOV_FUND.SC_ID, LOV_FUND.ISIN, Max(HISTO_FUND.Date_NAV) AS MaxOfDate_NAV
FROM LOV_FUND INNER JOIN HISTO_FUND ON LOV_FUND.SC_ID = HISTO_FUND.SC_ID
WHERE (((HISTO_FUND.Date_NAV) In (Select Max(Date_NAV)
From HISTO_FUND INNER JOIN LOV_FUND ON HISTO_FUND.SC_ID = LOV_FUND.SC_ID
Where (((LOV_FUND.SC_ID) In (Select SC_ID From LOV_FUND where Updating_BBG=-1 and Representative_SC_ID=SC_ID)))
Group by HISTO_FUND.SC_ID
))) AND (((LOV_FUND.SC_ID) In (Select SC_ID From LOV_FUND where Updating_BBG=-1 and Representative_SC_ID=SC_ID)))
GROUP BY LOV_FUND.SC_ID, LOV_FUND.ISIN;
Nitromard 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 19h35.


 
 
 
 
Partenaires

Hébergement Web