0

我有点沮丧,想知道您是否可以提供帮助:

我有一个音高值表,其中包含以下列 PitchValues_Skey、PitchType_Skey(这是一个外键)、开始日期、结束日期和最后的值:

例如:

1    7   01/01/2010    31/12/2010   £15
2    7   01/01/2011    31/12/2011   £20

我想要做的就是更新我的 Bookings 表,其中包含每次预订的金额,所以我将下面的代码放在一起,当我只有 2010 年的数据时它工作得很好,但我知道有 2011 年和 2012 年并且想要更新它但它只会更新 2010 年的价格。

SELECT        Bookings.Booking_Skey, DATEDIFF(day, Bookings.ArrivalDate, Bookings.DepartureDate) * PitchValues.Value AS BookingValue, 
                         PitchValues.PitchType_Skey
FROM            Bookings INNER JOIN
                         PitchValues ON Bookings.PitchType_Skey = PitchValues.PitchType_Skey
WHERE        (Bookings.Booking_Skey = 1)

因此,当我运行上面的查询时,我希望看到一行数据,但我看到的是 4(见下文)

我希望这样:

Booking_Skey    BookingValue    PitchType_Skey
      1               420                     4

但我明白了

Booking_Skey    BookingValue    PitchType_Skey
     1                 420                  4
     1                 453.6                4
     1                 476.7                4
     1                 476.7                4
4

1 回答 1

0

现在都整理好了,谢谢你的帮助。

SELECT  Bookings.Booking_Skey, DATEDIFF(DAY, Bookings.ArrivalDate, Bookings.DepartureDate) * PitchValues.Value AS BookingValue, PitchValues.PitchType_Skey
FROM    Bookings
INNER JOIN PitchValues ON Bookings.PitchType_Skey = PitchValues.PitchType_Skey
    AND Bookings.ArrivalDate BETWEEN PitchValues.StartDate AND PitchValues.EndDate
WHERE (Bookings.Booking_Skey = 1)
于 2013-02-21T14:49:00.677 回答