【发布时间】:2019-01-16 09:19:26
【问题描述】:
这是我的存储过程,它似乎从表中提取了所有正确的值,但由于某种原因,它使所有时间加倍,这反过来又使所有值加倍。我不知道我哪里出错了,任何帮助将不胜感激。
SELECT
FirstName, LastName,
JobRegular.RegularHours AS RegularHours,
JobRegular.RegularHours * dbo.Employees.Wage AS RegularPay,
JobRegular.OvertimeHours AS OvertimeHours,
JobRegular.OvertimeHours * dbo.Employees.Wage AS OvertimePay,
JobOvertime.CBRegularHours AS CBRegularHours,
JobOvertime.CBRegularHours * dbo.Employees.Wage AS CBRegularPay,
JobOvertime.CBOvertimeHours AS CBOvertimeHours,
JobOvertime.CBOvertimeHours * dbo.Employees.Wage AS CBOvertimePay
FROM
dbo.Employees
INNER JOIN
(SELECT
dbo.EmployeeJobs.EmployeeId,
SUM(dbo.EmployeeJobs.RegularHours) AS RegularHours,
SUM(dbo.EmployeeJobs.RegularHours) * MIN(dbo.Employees.Wage) AS RegularPay,
SUM(dbo.EmployeeJobs.OvertimeHours) As OvertimeHours,
SUM(dbo.EmployeeJobs.OvertimeHours) * MIN(dbo.Employees.Wage) As OvertimePay
FROM
dbo.EmployeeJobs, dbo.Employees
WHERE
dbo.EmployeeJobs.ComputerCodeId IN (7,8,9,13,14,15,16,17,18,19,22)
GROUP BY
dbo.EmployeeJobs.EmployeeId) AS JobRegular ON dbo.Employees.EmployeeId = JobRegular.EmployeeId
LEFT JOIN
(SELECT
dbo.EmployeeJobs.EmployeeId,
SUM(dbo.EmployeeJobs.RegularHours) As CBRegularHours,
SUM(dbo.EmployeeJobs.RegularHours) * MIN(dbo.Employees.Wage) AS CBRegularPay,
SUM(dbo.EmployeeJobs.OvertimeHours) AS CBOvertimeHours,
SUM(dbo.EmployeeJobs.OvertimeHours) * MIN(dbo.Employees.Wage) As CBOvertimePay
FROM
dbo.EmployeeJobs, dbo.Employees
WHERE
dbo.EmployeeJobs.ComputerCodeId IN (4,5,6)
GROUP BY
dbo.EmployeeJobs.EmployeeId) AS JobOvertime ON dbo.Employees.EmployeeId = JobOvertime.EmployeeId
【问题讨论】:
-
您是否尝试过在 SQL SERVER 管理中运行 SP?加倍发生在哪里?在 SP 中还是在您的程序代码中?
-
是的,当我在 SQL SERVER MANAGEMENT 中运行它时它会翻倍,我还没有将它连接到我的程序。
-
为什么要使用左连接?内连接会产生不同的错误数据吗?
-
INNER 不显示空值。但这并不是导致翻倍的原因。
-
谢谢你们,这是我的问题。我有两名员工,这就是它翻倍的原因。
标签: sql sql-server left-join inner-join