我的计算产生了所需结果的一半。我有什么想法我做错了吗?

时间:2014-12-11 21:35:49

标签: sql ms-access

我有两个表,一个叫做CarTypes,另一个叫做Hourly Rates。

CarType具有以下属性:

Id,
CarTypes,
Rates
HourlyID related to HourlyRates based on HourlyId-ID relationship.
Id is an AutoNumber
CarTypes are Sedan, 
Sports Utility, 
Stretch Limo 6 Passengers, 
Stretch Limo 8 passengers
Stretch Limo 10 Passengers
Stretch Limo 12 Passengers

每种车型都有自己的价格。

然后表HourlyRates具有以下属性: ID autoNumber, 每小时(最小时数为3)最大值为13及以上

我们的任务是将每个购物车类型的指定票价乘以用户选择的小时数,确定10%的折扣金额,确定(7%税)的税额,确定(20%)的小费或小费金额。 最后,那么,从票价中减去折扣,增加税额,添加提示金额以产生总金额。

到目前为止,我的计算仅显示轿车类型,轿车和运动型多功能车的所有价值(票价,折扣,小费,总数)。

有人可以告诉我我做错了吗?

提前致谢:

SELECT DISTINCT c.carTypes, h.hourly, h.hourly * IIf([CarTypes] = 'Sedan', 55, 
           IIf([CarTypes] = 'Stretch Limo : 6 Passenger)', 75,
           IIf([CarTypes] = 'Stretch Limo : 8 Passenger)', 90,
           IIf([CarTypes] = 'Stretch Limo : 10  Passenger)', 95,
           IIf([CarTypes] = 'Stretch Limo : 12  Passenger)', 110,
            IIf([CarTypes] = 'SportUtilityVehicle)', 110)))))) AS Fare, Fare*10/100 AS Discount, Fare-Discount AS NewFare, NewFare* 7/100 AS Tax, NewFare* 20/100 AS Tip, NewFare+Tax+TIP AS Total
FROM HourlyRates AS h INNER JOIN carType AS c ON h.ID= c.hourlyID;

enter image description here

1 个答案:

答案 0 :(得分:2)

除了Sedan之外,您在每个)的名称中都有额外的CarType,因此它们永远不会在嵌套的IIF()条件中捕获。

尝试:

SELECT DISTINCT c.carTypes, h.hourly, h.hourly * IIf([CarTypes] = 'Sedan', 55, 
           IIf([CarTypes] = 'Stretch Limo : 6 Passenger', 75,
           IIf([CarTypes] = 'Stretch Limo : 8 Passenger', 90,
           IIf([CarTypes] = 'Stretch Limo : 10  Passenger', 95,
           IIf([CarTypes] = 'Stretch Limo : 12  Passenger', 110,
            IIf([CarTypes] = 'SportUtilityVehicle', 110)))))) AS Fare, Fare*10/100 AS Discount, Fare-Discount AS NewFare, NewFare* 7/100 AS Tax, NewFare* 20/100 AS Tip, NewFare+Tax+TIP AS Total
FROM HourlyRates AS h INNER JOIN carType AS c ON h.ID= c.hourlyID;

我认为SWITCH()功能更容易理解:

SELECT DISTINCT c.carTypes, h.hourly, h.hourly * 
            SWITCH([CarTypes] = 'Sedan', 55
                  ,[CarTypes] = 'Stretch Limo : 6 Passenger', 75
                  ,[CarTypes] = 'Stretch Limo : 8 Passenger', 90
                  ,[CarTypes] = 'Stretch Limo : 10  Passenger', 95
                  ,[CarTypes] = 'Stretch Limo : 12  Passenger', 110
                  ,[CarTypes] = 'SportUtilityVehicle', 110
                  )  AS Fare
            , Fare*10/100 AS Discount
            , Fare-Discount AS NewFare
            , NewFare* 7/100 AS Tax
            , NewFare* 20/100 AS Tip
            , NewFare+Tax+TIP AS Total
FROM HourlyRates AS h INNER JOIN carType AS c ON h.ID= c.hourlyID;