2013-02-20 60 views
0

我应该知道这一点,但我不记得,我该如何添加另一列来显示AmountDays * PitchValues.Value = results。总和使用Datediff

SELECT DATEDIFF(day, Bookings.ArrivalDate, Bookings.DepartureDate) AS AmountDays, 
    PitchValues.Value 
FROM Bookings 
INNER JOIN PitchValues 
    ON Bookings.PitchType_Skey = PitchValues.PitchType_Skey 

结果到目前为止

AmountDays PitchValues.Value BookingValue 
    15   £15     
    7   £9 
    8   £25 

回答

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

或者,只为使它看起来很漂亮:

SELECT 
    P0.AmountDays, 
    P0.Value, 
    (P0.AmountDays * P0.Value) as YourCol 
FROM 
    (
    SELECT   
     DATEDIFF(day, Bookings.ArrivalDate, Bookings.DepartureDate) AS AmountDays, 
     PitchValues.Value 
    FROM    
     Bookings INNER JOIN 
     PitchValues ON Bookings.PitchType_Skey = PitchValues.PitchType_Skey 
) P0 

你也可能需要执行ISNULL(0)周围的在事件列中存在空值时,整个值将变为空值。像这样:

SELECT 
    P0.AmountDays, 
    P0.Value, 
    (P0.AmountDays * P0.Value) as YourCol 
FROM 
    (
    SELECT   
     ISNULL(DATEDIFF(day, Bookings.ArrivalDate, Bookings.DepartureDate), 0) AS AmountDays, 
     ISNULL(PitchValues.Value, 0) as Value 
    FROM    
     Bookings INNER JOIN 
     PitchValues ON Bookings.PitchType_Skey = PitchValues.PitchType_Skey 
) P0 
+0

SQL大师非常感谢你。 – wafw1971 2013-02-20 11:48:30