2013-03-19 101 views
1

我试图根据每月的库存销售情况选择由单个员工获得的总佣金。 ,我有三个表(tbl_carForSale,tbl_Commision和tbl_employee)。基于计算字段的所有值的总和

我可以得到该员工已售出的所有汽车的总价值,但我想要做的是能够计算该员工将获得的佣金总额(这是一个变量佣金是基于产品的价格),例如如果产品的价格是1000英镑,那么佣金的金额是1%(为了计算这一点,通过从产品表中获取产品的价格,然后解决如果它介于最小值和最大值之间并返回佣金)。

SELECT tbl_carForSale.name as 'employee Name', SUM(tbl_carForSale.carPrice) AS  
value of cars sold' 
INNER JOIN tbl_carForSale ON tbl_employee.employeeNo = tbl_carForSale.employeeNo 
WHERE tbl_carForSale.soldDate BETWEEN DATEADD("m", -1 ,Date()) AND Date() AND 
tbl_carForSale.bolSold = true 
GROUP BY tbl_employee.name 

** bolSold - 是指示汽车是否被标记为“已售出”的真假字段。

我知道我需要使用一个嵌套的select语句,但真的不知道,我怎么能够总结委员会以及汽车价格?我猜测,我可以有两个语句做到这一点 - 但我一点都肯定..

编辑:在COM表:

ComNo minValue maxValue comAvliable 
0   0   5000   2 
1   5001  10000   3 
2   10001  15000   4 
3   15001 99999999   5 
+0

@User ...您的表格是什么样的,它包含汽车价值到佣金百分比的映射? – MikeTWebb 2013-03-19 15:11:52

+0

编辑:添加到主要问题见上面 – KingJohnno 2013-03-19 15:22:42

+0

@用户...感谢张贴Com表。另外,如果这个答案对你有帮助,接受它是一个好主意。你接受一个有用答案的次数越多,你在未来接受有用答案的机会就越多......干杯 – MikeTWebb 2013-03-19 15:52:18

回答

1

我想你可以加入的COM表,让你的值。通过使用条件连接加入Com表,返回所需的comAvailable百分比。然后总结* carPrice:

SELECT tbl_carForSale.name as 'employee Name', 
    SUM(tbl_carForSale.carPrice) AS 'value of cars sold' 
    SUM(tbl_carForSale.carPrice * tc.comAvailable) AS 'commission on cars sold' 
INNER JOIN tbl_carForSale ON 
    tbl_employee.employeeNo = tbl_carForSale.employeeNo 
INNER JOIN tbl_Com tc ON 
    tbl_carForSale.carPrice >= tc.minValue 
    and 
    tbl_carForSale.carPrice <= tc.maxValue  
WHERE tbl_carForSale.soldDate BETWEEN DATEADD("m", -1 ,Date()) AND Date() AND 
tbl_carForSale.bolSold = true 
GROUP BY tbl_employee.name 

你需要注意的是Com表中的数据。如果INNER JOIN tbl_Com tc为carPrice/comAvailable映射返回多行,那么它将生成一个错误