【发布时间】:2018-11-12 15:28:12
【问题描述】:
我正在尝试使用案例使用 SQL 进行更新。如果该字段有数字,我的目标是用 field1 更新表格中的 field3。但如果它没有数字,那么我想用 field2 更新 field3。当我使用我的代码时,出现以下错误。
Msg 116, Level 16, State 1, Line 11。只能有一个表达式 未引入子查询时在选择列表中指定 存在。
这是我的代码:
Update [dbo].[oracle_reconciliation_report$]
SET [Forecast] =
(
Select [Forecast],
[ProposedApprovedCapitalExpenditureForecast ],
[ProposedCIP CapitalExpenditureForecast],
case when [ProposedApprovedCapitalExpenditureForecast ] > 0
then [ProposedApprovedCapitalExpenditureForecast ]
else [ProposedCIP CapitalExpenditureForecast]
end
)
From [dbo].[oracle_reconciliation_report$]
如果该字段有数字,我正在尝试用 field1 更新表格中的 field3,但如果它没有数字,那么我想用 field2 更新 field3
【问题讨论】:
-
在您的问题中,请为您正在使用的数据库引擎添加标签
-
您的子查询中有 3 列,但正试图将其分配给一列。那是行不通的。如果您在查询中引用了实际的列名,而不是描述中的“field1”、“field2”、“field3”,则可能会通过符合您要求的查询为您提供答案。
-
当您使用 SQL 标签时,会向您显示一条大消息,建议您还为正在使用的特定 DBMS 添加标签,因为它们之间的功能和语法各不相同。你为什么忽略这个建议?您只是让您花费更长的时间来获得答案,并且可能会浪费那些继续尝试提供帮助的人的时间,只是为了发现它对您的 DBMS 不起作用。当本网站(或网站上的某人)向您提供建议时,接受它符合您的最大利益。
-
内部选择必须是“标量子查询”。这意味着它必须返回一个 SINGLE 值,而不是 FOUR。
标签: sql sql-server