2015-05-22 108 views
5

我需要查询SQL数据库来查找一列的所有不同值,并且我需要来自另外两列的任意值。例如,下面的表格考虑有三列:CurrencyCodeBuyRateSellRate选择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 

我希望检索一行具有鲜明CurrencyCode,也许让这些三行:

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

我想尽SQL像这样的查询:

SELECT distinct CurrencyCode, BuyRate, SellRate FROM Currencies 

但是我没有得到想要的结果它划分了所有的列。

+0

哪些DBMS产品您使用的? – jarlh

+0

我正在使用MSSQL –

回答

6

GROUP BY子句和MIN函数尝试如下

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

感谢它的工作。 –

+0

@SabyasachiMishra我很高兴能帮上忙 – Parado

2

直到现在,我发现这是最好的答案得到Min(SellRate)Min(BuyRate)

如的基础上。

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 

在这里,我期待AUD行的BuyRateSaleRate1.0371.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