J'ai besoin d'interroger une database SQL
pour find toutes les valeurs distinctes d'une colonne et j'ai besoin d'une valeur arbitraire d'une autre deux colonnes. Par exemple, considérons le tableau suivant avec trois colonnes: CurrencyCode
, BuyRate
et SellRate
:
CurrencyCode BuyRate SellRate AUD 1.037 1.97 AUD 1.079 1.99 EUR 0.7288 0.8763 EUR 0.731 0.88 GBP 0.59 0.72
Je souhaite récupérer une ligne avec CurrencyCode
distinct, en obtenant peut-être ces trois lignes:
CurrencyCode BuyRate SellRate AUD 1.037 1.97 EUR 0.7288 0.8763 GBP 0.59 0.72
J'ai essayé ma requête SQL
comme:
SELECT distinct CurrencyCode, BuyRate, SellRate FROM Currencies
Mais je n'obtiens pas le résultat escompté car il regroupe toutes les colonnes.
Essayez avec la clause GROUP BY
et la fonction MIN
comme ci-dessous
SELECT CurrencyCode, MIN(BuyRate), MIN(SellRate) FROM Currencies GROUP BY CurrencyCode
Jusqu'à présent, j'ai trouvé que c'est la meilleure réponse pour get Min(SellRate)
sur la base de Min(BuyRate)
par exemple.
CurrencyCode BuyRate SellRate AUD 1.037 1.97 AUD 1.079 1.89 //Changed from 1.99 to 1.89 AUD 1.038 1.77 //New row added EUR 0.7288 0.8763 EUR 0.731 0.88 GBP 0.59 0.72
Ici, j'attends des lignes AUD
pour BuyRate
et SaleRate
sera 1.037
et 1.97
select CurrencyCode, Min(BuyRate) as BuyRate, (select top 1 SellRate from Currencies as C where C.CurrencyCode=Currencies.CurrencyCode and C.BuyRate= Min(Currencies.BuyRate) order by SellRate) as SellRate from Currencies group by CurrencyCode