2015-05-22 13 views
5

Ho bisogno di interrogare un database SQL per trovare tutti i valori distinti di una colonna e ho bisogno di un valore arbitrario da altre due colonne. Ad esempio, si consideri la seguente tabella con tre colonne: CurrencyCode, BuyRate e SellRate:Seleziona più colonne con una sola colonna distinta in sql

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 

Vorrei recuperare una riga con distinta CurrencyCode, forse ottenere questi tre file:

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

ho fatto del mio SQL interrogazione come:

SELECT distinct CurrencyCode, BuyRate, SellRate FROM Currencies 

Ma io non sto ottenendo il risultato desiderato come distringe tutte le colonne.

+0

Quali DBMS prodotto stai usando? – jarlh

+0

Sto usando MSSQL –

risposta

6

Prova con GROUP BY clausola e MIN funzionano come di seguito

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

Grazie ha funzionato. –

+0

@SabyasachiMishra Sono felice di poterti aiutare – Parado

2

Fino ad ora ho trovato questa è la risposta migliore per ottenere Min(SellRate) sulla base di Min(BuyRate)

ad es.

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 

Qui mi aspetto AUD righe per BuyRate e SaleRate sarò 1.037 e 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 
Problemi correlati