SQL 2008 を使用していますが、このクエリを機能させることができません。フライト料金の詳細が記載されたテーブルがあります。各ルートには毎日多くの行があり、ルートの 1 日あたりの最低価格と DateAdded (行が追加された日時) を返したいと考えています。1日あたりの最低価格を返すことができたように見えるので、ほとんどそこにいますが、正しい追加日を返すことができないようです. 以下のコードは 1 日あたりの最低価格を返すように見えますが、DateAdded も返すには何らかの結合が必要だと思いますか?
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