Я использую SQL 2008 и просто не могу заставить этот запрос работать. У меня в таблице есть таблица с информацией о ценах на рейс. Для каждого маршрута много строк на каждый день, и я хочу вернуть самую низкую цену за день для маршрута, а также DateAdded (дата и время, в которое была добавлена строка). Я почти там, поскольку мне, похоже, удалось получить самую низкую цену за день, но я не могу получить правильную дату, чтобы вернуться. Код, как представляется, работает, чтобы вернуть самую низкую цену за день, но я думаю, что мне нужно какое-то соединение, чтобы также вернуть DateAdded?SQL GROUP BY или JOIN
ALTER PROCEDURE [dbo].[FlightInfoLowestPricePerDay]
(
@AirportFrom varchar(5),
@AirportTo varchar(5)
)
AS
select DATEADD(dd, 0, DATEDIFF(dd, 0, TimeDeparture)) as FlightDate, MIN(Price) as MinPrice
from FlightInfo
where AirportFrom = @AirportFrom and AirportTo = @AirportTo
AND TimeDeparture > DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))
Group By DATEADD(dd, 0, DATEDIFF(dd, 0, TimeDeparture))
Order by FlightDate ASC
Я пробовал такие вещи, как код ниже, но я не совсем понимаю, присоединяется еще так боролись за долгое время, хотя я уверен, что я что-то очень просто отсутствует!
ALTER PROCEDURE [dbo].[FlightInfoLowestPricePerDay]
(
@AirportFrom varchar(5),
@AirportTo varchar(5)
)
AS
select DATEADD(dd, 0, DATEDIFF(dd, 0, fi1.TimeDeparture)) as FlightDate, MIN(fi1.Price) as MinPrice, fi2.DateAdded
from FlightInfo
fi1 join FlightInfo fi2 on fi1.Price = fi2.Price
where fi1.AirportFrom = @AirportFrom and fi1.AirportTo = @AirportTo
AND fi1.TimeDeparture > DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))
Group By DATEADD(dd, 0, DATEDIFF(dd, 0, fi1.TimeDeparture))
Order by FlightDate ASC
Используя свой первый запрос, не включается, я думаю, вы могли бы просто поставить DateAdded в агрегатной функции, как 'MAX (Dat eAdded) ' –