【问题标题】:Select multiple columns with only one distinct column in sql在sql中选择只有一个不同列的多列
【发布时间】:2015-05-22 09:19:50
【问题描述】:

我需要查询SQL 数据库以查找一列的所有不同值,并且我需要另外两列的任意值。例如,考虑下表包含三列:CurrencyCodeBuyRateSellRate

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

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

【问题讨论】:

  • 您使用的是哪种 dbms 产品?

标签: sql sql-server


【解决方案1】:

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

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

【讨论】:

  • @SabyasachiMishra 很高兴我能提供帮助
【解决方案2】:

到目前为止,我发现这是在Min(BuyRate)的基础上获得Min(SellRate)的最佳答案

例如。

    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

这里我期待AUDrows for BuyRateSaleRate 将是 1.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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-14
    • 2018-03-11
    • 1970-01-01
    • 2018-11-16
    相关资源
    最近更新 更多