2013-03-19 103 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映射返回多行,那麼它將生成一個錯誤