У меня есть две таблицы, которые я хочу использовать в своем запросе: tblEmployee
и tblEmpPerformance
.
Требование:
Используя tblEmployee.EmpID, tblEmployee.ManagerID
, перейдите через tblEmpPerformance
и посмотрите на tblEmpPerformance.SalaryRaise
и tblEmpPerformance.CommissionRaise
и соответственно обновите tblEmployee
.
Только одно из этих двух полей будет иметь ненулевое значение для каждой записи в tblEmpPerformance
.
if tblEmployee.EmpID = tblEmpPerformance.EmpID then
If tblEmpPerformance.Salary > 0 then
update tblEmployee
Set CompensationType = 'Salary'
Where tblEmployee.EmpID = tblEmpPerformance.EmpID
AND tblEmployee.ManagerID = tblEmpPerformance.ManagerID
update tblEmployee
Set SalaryRaise = tblEmpPerformance.SalaryRaise
Where tblEmployee.EmpID = tblEmpPerformance.EmpID
AND tblEmployee.ManagerID = tblEmpPerformance.ManagerID
If tblEmpPerformance.Commission > 0 then
update tblEmployee
Set CompensationType = 'Commission'
Where tblEmployee.EmpID = tblEmpPerformance.EmpID
AND tblEmployee.ManagerID = tblEmpPerformance.ManagerID
update tblEmployee
Set CommissionRaise = tblEmpPerformance.CommissionRaise
Where tblEmployee.EmpID = tblEmpPerformance.EmpID
AND tblEmployee.ManagerID = tblEmpPerformance.ManagerID
Если подходящие EmpID
не найдены, то ищите в tblContractorPerformance
if tblEmployee.EmpID = tblContractorPerformance.EmpID then
If tblContractorPerformance.Salary > 0 then
update tblEmployee
Set CompensationType = 'Salary'
Where tblEmployee.EmpID = tblContractorPerformance.EmpID
AND tblEmployee.ManagerID = tblContractorPerformance.ManagerID
....
....
....
....
Next tblEmployee.EmpID
Обновление: DOH!!.. Как лучше всего написать этот SQL-запрос. Сохраненный Proc или курсор? Любое предложение о том, как разработать запрос, также будет большим подспорьем.