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
4

1 回答 1

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 映射返回多于一行,那么它将产生错误

于 2013-03-19T15:33:27.410 回答