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 :

SQL SERVER - fonction proche du MAX SI ENS


Sujet :

Développement SQL Server

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Auditeur financier
    Inscrit en
    Mars 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Auditeur financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2015
    Messages : 7
    Points : 6
    Points
    6
    Par défaut SQL SERVER - fonction proche du MAX SI ENS
    Bonjour,

    je cherche à créer une table avec les taux de conversion les plus récents en date, par devise.

    En l'occurrence, ma table s'appelle exchangeratehistory, et contient les colonnes suivantes :
    ID
    CurrencyID
    FromDate
    ToDate
    ExchangeRate

    Pour info, la date (todate) maximum de chacun des taux par devise est le 31/12/2020
    J'ai en tout 7 currencyID différents (c'est à dire 7 devises: USD, CAD, etc.)

    J'aimerais obtenir un résultat de 7 lignes, sur les colonnes suivantes :
    CurrencyID
    ToDate
    ExchangeRate

    Mais je n'y arrive pas avec la formule suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    select
    max(todate) as todate,
    CurrencyID,
    ExchangeRate
     
    from exchangeratehistory
     
    group by
    CurrencyID,
    ExchangeRate

    J'ai essayé avec un max over(partition by CurrencyID) mais sans résultat non plus.

    Quelqu'un a une idée ?

    Merci d'avance !
    Images attachées Images attachées  

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 138
    Points : 1 918
    Points
    1 918
    Par défaut
    Bonjour,

    Tu peux utiliser la fonction row_number pour ne garder que les plus récents:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    with v as (select todate,
                      currencyID,
                      ExchangeRate,
                      row_number() over (partition by currencyID order by todate desc) as rn
               from exchangeratehistory
              )
    select todate,
           currencyID,
           ExchangeRate
    from v
    where rn = 1;

Discussions similaires

  1. [Sql Server] Fonction de recherche dans une chaine
    Par pierre031183 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 06/01/2011, 16h16
  2. Réponses: 6
    Dernier message: 05/12/2006, 10h28
  3. [SQL Server] Fonction COALESCE
    Par evans dans le forum Langage SQL
    Réponses: 4
    Dernier message: 05/04/2006, 15h19
  4. [SQL Server] fonction CONVERT
    Par dieudo dans le forum Langage SQL
    Réponses: 3
    Dernier message: 09/02/2006, 13h08
  5. SQL Server / Fonction définie par l'utilisateur
    Par borgfabr dans le forum Langage SQL
    Réponses: 3
    Dernier message: 08/03/2005, 15h14

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