Sql server 来自select的SQL update语句
我想使用Sql server 来自select的SQL update语句,sql-server,Sql Server,我想使用select语句中的另一列更新表中的一列。这就是我正在尝试的: UPDATE CostFile SET UPrice = ( SELECT ( dbo.EmployeeDailyTrans.DailyCost ) + ( dbo.EmployeeDailyTrans.OverTimeHoursCost ) / ( dbo.EmployeeD
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]子查询返回了多个值。当子查询在=、!=、=或者当子查询用作表达式时。
01000-[SQL Server]该语句已终止
如果非要我推测的话,我猜你想:
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';
如果非要我推测的话,我猜你想:
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';
您的更新设置为使用单个值更新记录。您的查询返回多个结果。您需要优化选择以仅返回一行。由于该员工代码有许多trans记录可用,所以您可以使用Top或window函数获取抗癌记录或执行聚合。如果您发布更多关于您试图实现的目标的详细信息,您可以在语法方面获得一些帮助。您的更新设置为使用单个值更新记录。您的查询返回多个结果。您需要优化选择以仅返回一行。由于该员工代码有许多trans记录可用,所以您可以使用Top或window函数获取抗癌记录或执行聚合。如果您发布更多关于您试图实现的目标的详细信息,您可以在语法方面获得一些帮助。您的select查询返回了多行,因此错误……这似乎是不言自明的,可能会将
TOP 1
添加到内部select,就像它显示的那样EmployeeCode
可能不是唯一的吗?您的select查询返回了多行,因此错误…这似乎是不言自明的,可能会将TOP 1
添加到内部select,就像它显示的那样EmployeeCode
可能不是唯一的?