簡體   English   中英

所有值的總和,基於計算所得的字段

[英]Sum of all values, based on a calculated field

我正在嘗試根據每月的股票銷售來選擇單個員工賺取的佣金總額。 ,我有三個表(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-是一個true / false字段,指示汽車是否已被標記為“已出售”。

我知道我需要使用嵌套的select語句,但實際上不知道如何對佣金以及汽車價格進行匯總? 我猜我可以用兩個陳述來做到這一點-但一點也不確定。

編輯:Com表:

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

我認為您可以加入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映射返回了多行,則將產生錯誤

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM