我遇到以下SQL语句的问题。我收到一个错误,说“ORA-01427:单行子查询返回多行”,我不确定如何修复错误。任何帮助是极大的赞赏!谢谢布拉德
select t.check_amount,
t.check_amount_text,
t.agency_no,
t.branch_no,
substr(t.payee_name,1,10),
substr(t.payee_name,11),
(select c.contact_primary_email
from contact c,
contact_role cr,
branch b
where c.contact_id = cr.contact_id
and cr.entity_id = b.branch_id
and cr.contact_role_code = 'ACHCONTACT')
from CHECK_REGISTER t
where t.check_type = 'C'
and t.check_date > to_date('01/31/2014','mm/dd/yyyy')
and t.disbursement_fund_type = 'ACH'
答案 0 :(得分:3)
发生错误是因为您有select
语句,其中包含单个值。 select
返回多行,因此Oracle报告错误。
在诸如你的查询中,这通常是因为您需要将内部子查询关联到外部查询。我最好的猜测是,此查询需要分支机构主要联系人的电子邮件地址。为此,查询将是:
(select c.contact_primary_email
from contact c join
contact_role cr
on c.contact_id = cr.contact_id join
branch b
on cr.entity_id = b.branch_id
where b.branch_no = t.branch_no and cr.contact_role_code = 'ACHCONTACT'
) as email
这假设branch_no
上的相关条件。