如何解决这种探测对我有帮助。
Select SUM(iamount)
from cust_installment
where c_no=(
Select b.c_no
from a_basic a
INNER JOIN cust_personal b ON a.a_code=b.a_code
INNER JOIN cust_installment c ON b.c_no=c.c_no
where c.idate BETWEEN '2014-06-25' AND '2014-06-25')
错误是
Msg 512,Level 16,State 1,Line 2 子查询返回的值超过1。当子查询遵循=,!=,<,< =,>,> =或子查询用作表达式时,不允许这样做。
答案 0 :(得分:2)
在你的主要where子句中where c_no=( <<SUBQUERY>> )
。这里的内部子查询必须返回一个结果,否则where子句没有意义。
因此,要么使用top 1
将子查询限制为单个结果,要么修复它,如果逻辑上它应该只返回一个结果。
或者,如果您希望匹配多个结果,请将main where子句更改为where c_no in ( <<SUBQUERY>> )
答案 1 :(得分:1)
您的子查询
Select b.c_no from a_basic a INNER JOIN cust_personal b ON a.a_code=b.a_code INNER JOIN cust_installment c ON b.c_no=c.c_no where c.idate BETWEEN '2014-06-25' AND '2014-06-25'
可以返回多个值。
您有几个机会:
=
替换为in
答案 2 :(得分:1)
试试这个
Select SUM(iamount)
from cust_installment
where c_no in (
Select b.c_no
from a_basic a
INNER JOIN cust_personal b ON a.a_code=b.a_code
INNER JOIN cust_installment c ON b.c_no=c.c_no
where c.idate BETWEEN '2014-06-25' AND '2014-06-25')