【发布时间】:2015-01-19 06:38:27
【问题描述】:
我正在使用以下查询,但它引发了错误。它在某些情况下可以正常工作,具体取决于 id,但并非适用于所有情况。
子查询返回超过 1 个值。这是不允许的,当 子查询遵循 =、!=、、>= 或当子查询用作 一个表达式。
Set @NoOfRows = (Select COUNT(*) from @TempT)
While @i <= @NoOfRows
Begin
SET @Voucher_No=( select V_No from @TempT where RowID=@i)
SET @Voucher_Type_No=( select voucher_type_no from @TempT where RowID=@i)
SET @Voucher_Id=( select Voucher_Id from @TempT where RowID=@i)
set @strPartyName=''
set @strPartyName = (Select Party_Name from Cheque_Book where Voucher_No= @Voucher_No and Voucher_Type_No= @Voucher_Type_No and Company_No= @Comp_No and Bank_Account_No= @dbc_Account )
if NULLIF(@strPartyName,'') IS NULL
begin
set @strPartyName =(Select a.account_name from Voucher v inner join account a on v.Account_No = a.account_No where v.Voucher_Id= @Voucher_Id)
Update @TempT Set Party_Name =@strPartyName Where RowID =@i
set @i=@i+1
end
End
Select * from @TempT
【问题讨论】:
-
你遇到了什么错误?
-
正如错误所说,您的任何选择查询都返回多个值,这就是您出错的原因?在每次选择查询后使用 Print 进行调试,以便您可以找到错误的确切位置或创建 sqlfiddle。
-
您的一个 SELECT 语句返回多个值而不是返回单个值。尝试为该特定 ID 单独运行每个 select 语句。
-
您的一些子查询返回的值超过了值.. 单独执行子查询并验证
-
@temp 表返回超过 200 行,几乎不可能调试每一行的值
标签: sql sql-server tsql