我有表BIDS,它包含很多列和行,但我只想选择包含最低BIDPRICE的行。
Select min(Cast(Bids.BidPrice as INT)), BidBidderName from bids BidBidderName
但是它会抛出错误
列'bid.BidBidderName'在选择列表中无效,因为它 不包含在聚合函数
中
当我将BidderName放入Group时,它会显示所有记录,但我只想要包含最低出价的记录。
答案 0 :(得分:1)
这是一个只能获得价格最低的行的选项。
Select top 1 BidPrice
, BidBidderName
from bids
order by Cast(BidPrice as INT)
答案 1 :(得分:0)
您可以使用子查询:
Select BidPrice, BidBidderName from bids
where Bids.BidPrice in (Select min(Cast(b.BidPrice as INT)) from bids b)
或INNER JOIN
:
Select b1.BidPrice, b1.BidBidderName from bids b1
inner join (select Min(BidPrice) BidPrice from @bids) as b2 on b.BidPrice = b2.BidPrice
答案 2 :(得分:0)
如果您只想要具有最低出价的行,则解决方案是使用子查询来查找最低价格,如下所示:
Select BidPrice, BidBidderName
from bids
where BidPrice = (select min(Cast(BidPrice as INT)) from bids)
如果BidPrice是货币或数字类型(它很可能应该是),则不需要转换为int。
如果你这样做
Select Min(BidPrice) BidPrice, BidBidderName
from bids
group by BidBibberName
您将获得每个竞标者的最低出价。
答案 3 :(得分:0)
尝试:
ROW_NUMBER()
;with cte1
as
(
select BidderName ,BidPrice,Row_Number() Over(order by price asc) as rn from bids
)
select * from cte1 where rn=1;
或者
最小(BidPrice)结束(按价格asc分配BidderName顺序)
select top 1 BidderName ,Min(BidPrice) Over(PARTITION BY BidderName order by price asc) as minBidPrice from bids