我有一個投標表,如下所示: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