2013-03-19 4 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, но на самом деле понятия не имею, о том, как я мог бы суммировать комиссию, а также цену автомобиля? Я предполагаю, что я мог сделать это с двумя утверждением - но я не уверен, на всех ..

Edit: Com стол:

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

@User ... как выглядит ваш стол, который содержит отображение стоимости автомобиля на комиссионный процент? – MikeTWebb

+0

Редактировать: Добавлено в основной вопрос, см. Выше – KingJohnno

+0

@User ... спасибо за публикацию таблицы Com. Кроме того, если этот ответ поможет вам, рекомендуется принять его. Чем больше раз вы принимаете полезный ответ, тем больше у вас шансов получить полезные ответы в будущем .... Cheers – MikeTWebb

ответ

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, то генерирует ошибку

Смежные вопросы