【发布时间】:2015-02-18 09:28:38
【问题描述】:
我正在执行一个返回错误的过程:
子查询返回超过 1 个值。这是不允许的,当 子查询遵循 =、!=、、>= 或当子查询用作 一个表达式。
我知道,因为某些字段预计会返回超过 1 个值,但我需要处理它,我正在处理借方、贷方减法结果,如 CR-DR 等
(
Conductor_ID
)
Set @AccID= (Select Account_ID FROM Transport.Conductors WHERE ConductorID in (@ConductorID))
Set @AccCredit= (Select CR from [dbo].[Transactions] where Account_ID in (@AccID))
Set @AccDebit= (Select DR from [dbo].[Transactions] where Account_ID in (@AccID))
Set @Total= @AccCredit-@AccDebit
【问题讨论】:
-
检查子查询是返回单行还是多行
-
如果有多个,你想用哪个?
-
如果它返回多个值,您应该使用表变量或临时表。
-
@PareshJ 我不太了解 sql,如果你们能帮助我,我会尽力而为,我不明白该怎么做:(
-
@AamirShah - 变量只能保存一个值(即)一行。但是您的子查询返回不止一行。所以现在您需要将哪一行存储在该变量中。如果要存储多行,请使用临时表
标签: sql sql-server sql-server-2012