我正在使用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
(DAT eAdded)' – 2013-03-22 10:44:00