Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 来自select的SQL update语句_Sql Server - Fatal编程技术网

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
可能不是唯一的?