Frage Wählen Sie mehrere Spalten mit nur einer eigenen Spalte in SQL aus


Ich muss einen abfragen SQL Datenbank, um alle eindeutigen Werte einer Spalte zu finden, und ich brauche einen beliebigen Wert aus zwei anderen Spalten. Betrachten Sie beispielsweise die folgende Tabelle mit drei Spalten: CurrencyCode, BuyRate und 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

Ich möchte eine Zeile mit distinct abrufen CurrencyCodeVielleicht bekommst du diese drei Zeilen:

CurrencyCode  BuyRate  SellRate
AUD           1.037    1.97
EUR           0.7288   0.8763
GBP           0.59     0.72

Ich habe es versucht SQL Frage wie:

SELECT distinct CurrencyCode, BuyRate, SellRate FROM  Currencies

Aber ich bekomme nicht das gewünschte Ergebnis, da es alle Spalten umkreist.


5
2018-05-22 09:19


Ursprung


Antworten:


Versuche es mit GROUP BY Klausel und MIN Funktion wie folgt

SELECT CurrencyCode, MIN(BuyRate), MIN(SellRate)
FROM  Currencies
GROUP BY CurrencyCode 

7
2018-05-22 09:21



Bis jetzt fand ich, dass dies die beste Antwort ist Min(SellRate) auf der Grundlage von Min(BuyRate)

z.B.

    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

Hier erwarte ich AUDZeilen für BuyRate und SaleRate wird sein 1.037 und 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

2
2017-07-21 10:57