Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 使用SQL Server中的其他列值选择列中的最高值_Sql Server_Sql Server 2016 - Fatal编程技术网

Sql server 使用SQL Server中的其他列值选择列中的最高值

Sql server 使用SQL Server中的其他列值选择列中的最高值,sql-server,sql-server-2016,Sql Server,Sql Server 2016,我的桌子看起来像这样: 我想用行id获取特定产品的最高出价金额。我的查询如下 SELECT MAX(BidAmount) as highestBid,id FROM [wf_bid] WHERE ProductId = 101 AND ClientId = 101 GROUP BY id 我只希望有一行具有最高的BidAmount,但查询返回具有此产品id和客户id的所有行。我如何解决此问题?您的问题在group by id中,它不起作用,因为它不

我的桌子看起来像这样:

我想用行id获取特定产品的最高出价金额。我的查询如下

SELECT 
    MAX(BidAmount) as highestBid,id
FROM 
    [wf_bid]  
WHERE
    ProductId = 101 AND ClientId = 101  
GROUP BY
    id

我只希望有一行具有最高的
BidAmount
,但查询返回具有此产品id和客户id的所有行。我如何解决此问题?

您的问题在group by id中,它不起作用,因为它不是“添加您的出价”它告诉你每个ID的最大数量,不仅仅是哪一个是最大的出价和它的ID。我猜如果你按ID删除分组,你会得到你想要的。如果不是,你需要进一步解释你的需要。

你的问题在按ID分组,它不起作用,因为它不是“添加你的出价”它告诉您每个ID的最大编号,不仅仅是哪个是最大的出价和它的ID。我猜如果您按ID删除分组,您将得到您想要的。如果不是,您需要进一步解释您的需要。

您可以使用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
您可以使用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

子查询怎么样?如果有多条记录具有相同的BidAmount,则返回top 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)

子查询怎么样?如果有多条记录具有相同的BidAmount,则返回top 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)
这样怎么样:

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
这样怎么样:

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
这样试试看

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
这样试试看

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

请使用创建脚本和一些虚拟数据更新问题您的条件是否有示例数据?请使用创建脚本和一些虚拟数据更新问题您的条件是否有示例数据?在“=”附近抛出此错误消息102,级别15,状态1,第4行语法错误。抱歉。我已经编辑了我的答案。Where子句丢失。在“=”附近抛出错误消息102,级别15,状态1,第4行。抱歉。我已经编辑了我的答案。缺少Where子句。您应该对SQL关键字的拼写保持一致-要么使用全大写,要么使用“全小写”,要么使用“混合”-选择其中任何一个并坚持它-不要更改每个关键字的拼写-那只是一团混乱…..感谢@marc_s的提醒您应该保持SQL关键字拼写的一致性-要么使用全大写,要么“全小写”,要么“混合”-选择其中任何一个并坚持它-不要用每个关键词改变拼写-那只是一团糟…..谢谢@marc_s的提醒