我有一个投标表,如下所示:SQL查询 - 通过多个列组,但不同的
SellID INT FOREIGN KEY REFERENCES SellItem(SellID),
CusID INT FOREIGN KEY REFERENCES Customer(CusID),
Amount FLOAT NOT NULL,
BidTime DATETIME DEFAULT getdate()
现在在我的网站,我需要向用户显示当前投标;只有最高出价但不重复相同的用户。
SELECT CusID,
Max(Amount)
FROM Bid
WHERE SellID = 10
GROUP BY CusID
ORDER BY Max(Amount) DESC
这是迄今为止我所取得的最好成绩。这使得每个用户的CusID具有最高出价,并且按照升序排列。但是我也需要为每个结果获取BidTime。当我尝试把BidTime中查询:
SELECT CusID,
Max(Amount),
BidTime
FROM Bid
WHERE SellID = 10
GROUP BY CusID
ORDER BY Max(Amount) DESC
,有人告诉我“列Bid.BidTime'在选择列表中无效,因为它不是在聚合函数或GROUP包含BY条款“。
因此我想:
SELECT CusID, Max(Amount), BidTime
FROM Bid
WHERE SellID = 10
GROUP BY CusID, BidTime
ORDER BY Max(Amount) DESC
但是,这将返回所有行。没有区别。有关解决这个问题的任何建议?
错误和这意味着OP想要出价的最高出价值,但我正在寻求澄清。 – 2010-03-28 20:02:01
这工作:)但我需要刷新我的知识加入... 由于AdaTheDev是第一个回答,我认为这是公平的标记他的答案为接受。然而,OMG小马也给出了一个很好的解释:) – 2010-03-28 20:20:11