我想使用来自select
语句的另一列更新表中的列。这就是我正在尝试的:
UPDATE CostFile
SET UPrice = (
SELECT
(
dbo.EmployeeDailyTrans.DailyCost
) + (
dbo.EmployeeDailyTrans.OverTimeHoursCost
)
/
(
dbo.EmployeeDailyTrans.NumberOfHours
) + (
dbo.EmployeeDailyTrans.NumberOfOverTimeHours
)
FROM
dbo.EmployeeDailyTrans
WHERE
dbo.EmployeeDailyTrans.EmployeeCode = 'UNE25681'
)WHERE Code = 'UNE25681'
但是我收到了这个错误:
[Err] 21000 - [SQL Server]子查询返回的值超过1。当子查询遵循=,!=,<,< =,>,> =或子查询用作表达式时,不允许这样做。 01000 - [SQL Server]语句已终止。
答案 0 :(得分:0)
如果我不得不推测,我猜你想要聚合:
UPDATE CostFile
SET UPrice = (SELECT (SUM(edt.DailyCost + edt.OverTimeHoursCost) /
SUM(edt.NumberOfHours + edt.NumberOfOverTimeHours)
)
FROM dbo.EmployeeDailyTrans edt
WHERE edt.EmployeeCode = CostFile.Code
)
WHERE Code = 'UNE25681';
答案 1 :(得分:0)
您的更新设置为使用单个值更新记录。您的查询返回多个结果。您需要优化您的选择以仅返回一行。由于许多trans记录可用于该员工代码,因此您可以使用Top或window函数来获取抗癌记录或执行聚合。如果你发布一些关于你想要实现的内容的更多细节,你可以获得一些语法帮助。