У меня есть таблица ставок следующим образом:SQL Query - группа более одного столбца, но отчетливый
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 хочет, чтобы время ожидания для максимального значения ставки, но я ищу для этого разъяснения. –
Это работает :) Но мне нужно освежить мои знания о присоединениях ... Поскольку AdaTheDev был первым, кто отвечал, я предполагаю, что справедливо отметить его ответ как принятый. Однако OMG Ponies также дал замечательное объяснение :) –