我的表格如下:
我希望获得具有行ID的特定产品的最高出价金额。我的查询是这样的
SELECT
MAX(BidAmount) as highestBid,id
FROM
[wf_bid]
WHERE
ProductId = 101 AND ClientId = 101
GROUP BY
id
我希望只有一行具有最高BidAmount
,但查询会返回具有此产品ID和客户端ID的所有行。我该如何解决这个问题?
答案 0 :(得分:1)
您可以使用row_number()并选择第一行:
SELECT *
FROM
(
SELECT
id,
BidAmount,
ROW_NUMBER() OVER (ORDER BY BidAmount desc) as rn
FROM
[wf_bid]
WHERE ProductId = 101 and ClientId = 101
) i
WHERE
i.rn = 1
答案 1 :(得分:1)
子查询怎么样?如果您有多个具有相同BidAmount的记录,则返回前1。
SELECT TOP 1
BidAmount as highestBid,id
FROM [wf_bid] WHERE BidAmount = (Select Max(BidAmount) FROM [wf_bid] WHERE ProductId=101 and ClientId=101)
答案 2 :(得分:1)
这样怎么样:
SELECT id,highestBid from
(Select Max(BidAmount)highestBid,productID,clientid FROM [wf_bid] WHERE ProductId=101 and ClientId=101) a
LEFT JOIN
(SELECT id,productID,clientid FROM [wf_bid]) as b
where a.productID = b.productid and a.clientid = b.clientid
答案 3 :(得分:1)
试试这个,
select * FROM
(SELECT
id,
BidAmount,
ROW_NUMBER() OVER (parrtition by ProductId ORDER BY BidAmount desc) as rn
FROM
[wf_bid]
WHERE ClientId = 101)t4
where rn=1
答案 4 :(得分:-1)
您的问题出现在ID中的组中,因为它不是“添加您的出价”而无法正常工作,它会告诉您每个ID的最大数量,而不仅仅是最高出价和ID。如果您按ID删除分组,我猜你会得到你想要的东西。如果没有,您需要进一步解释您的需求。