我希望使用派生数据来获得根据处理的约会计算的总薪水(每个20英镑),基本工资是1000英镑。此外,薪水应按月份和年份排序。
约会表具有约会日期和时间,工作表具有WorkerID和WorkerName,工资具有salaryID,约会处理和预约成本(20磅)。 我想根据每月1000英镑的基本工资和其他成本(预约处理* 20)按日期计算总工资。 我按日期订购有问题。
AppointmenID |AppointmentDate | MechanicID
:----- | -----: | :----:
AI1 | 2017-01-01 | MI1
AI2 | 2017-01-15 | MI2
AI3 | 2017-02-01 | MI1
SalaryID | Salary | AppointmentCost
:----- | -----: | :----:
1 | 1000 | 20
AppointmenID |AppointmentDate | MechanicID
:----- | -----: | :----:
AI1 | 2017-01-01 | MI1
AI2 | 2017-01-15 | MI2
AI3 | 2017-02-01 | MI1
AI4 | 2017-01-25 | MI2
MechanicID |MechanicName| SalaryID
:----- | -----: | :----:
MI1 | Rooney | 1
MI2 | Stephan | 1
MI3 | Ronaldo | 1
AppointmentDate | MechanicID | MechanicName | Salary| AppointmentCost| Appointment Handled | Salary
:----- | -----: | :----: | ----:| :----:|:--|:-----|
2017-01-01 | MI1 | Rooney | 1000 | 20 |1 | 1020
2017-01-15 | MI2 | Stephan | 1000 | 20 |2 | 1040
AppointmentDate | MechanicID | MechanicName | Salary| AppointmentCost| Appointment Handled | Salary
:----- | -----: | :----: |:----- | -----:| :----: |:-----
2017-01-01 | MI1 | Rooney | MI1 | 1000 | 20 |1 | 1020
任何人都可以帮助我。
答案 0 :(得分:0)
您需要Join's
并使用以下表达式来计算机械师的工资
salary + ( count of appointmenthandled * appointmentcost )
像这样的东西
SELECT A.appointmentdate,
M.mechanicid,
M.mechanicname,
S.salary,
S.appointmentcost,
A.appointmenthandled,
salary = S.salary + ( A.appointmenthandled * S.appointmentcost )
FROM mechanic M
INNER JOIN salary S
ON M.salaryid = S.salaryid
INNER JOIN (SELECT mechanicid,
AppointmentHandled = Count(*),
AppointmentDate =Min(appointmentdate)
FROM appointment A
--Where month(AppointmentDate) = 1
GROUP BY mechanicid,
Month(appointmentdate)) A
ON M.mechanicid = A.mechanicid