首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于两列从SQL中只获取一个条目?

基于两列从SQL中只获取一个条目?
EN

Stack Overflow用户
提问于 2020-07-06 12:52:45
回答 2查看 43关注 0票数 1

我有一个如下的问题

代码语言:javascript
复制
select B.BidderId, I.TrackingNumber, B.Amount
from dbo.Items I
inner join dbo.Bids B on I.SaleId = B.SaleId
where I.item = '123' and I.IsRecycled = 0

基本上它将获取项目123的所有投标人,

示例结果

代码语言:javascript
复制
BidderID 1 => trackingnumber 1 => amount =>1000
BidderID 1 => trackingnumber 1 => amount =>9200
BidderID 1 => trackingnumber 1 => amount =>8000
BidderID 2 => trackingnumber 1 => amount =>8200
BidderID 1 => trackingnumber 2 => amount =>50

正如你所看到的,有多个出价金额的用户与bidderid 1。我如何才能只接受最大金额值为bidder1的行。

结果应该是这样的(只考虑用户对一个项目的最大金额)。

代码语言:javascript
复制
BidderID 1 => trackingnumber 1 => amount =>1000
BidderID 2 => trackingnumber 1 => amount =>8200
BidderID 1 => trackingnumber 2 => amount =>50 (this is a diffrent item so included)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-06 13:09:42

这是一个简单的聚合:

代码语言:javascript
复制
select B.BidderId, I.TrackingNumber, MAX(B.Amount)
from dbo.Items I
inner join dbo.Bids B on I.SaleId = B.SaleId
where I.item = '123' and I.IsRecycled = 0
GROUP BY  B.BidderId, I.TrackingNumber
票数 2
EN

Stack Overflow用户

发布于 2020-07-06 12:58:49

您可以尝试使用row_number()

代码语言:javascript
复制
select *
from (
    select B.BidderId, I.TrackingNumber, B.Amount
        , row_number() over (partition by B.BidderId, I.TrackingNumber order by B.Amount desc) as rn
    from dbo.Items I
    inner join dbo.Bids B On I.SaleId = B.SaleId
    where I.item = '123' and I.IsRecycled = 0
) A where rn = 1
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62749458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档