ORA-01427single-row subquery returns more than one

今天改bug遇到了一个错误,如题.是别人改了我的sql,没经过严格的测试,后来发现改坏了.出错的语句如下 :

select
g.id, g.account_id, g.account_relationship_id
, (select le.DISPLAY_NAME
from g, lov_element le
where g.GRIEVANCE_TYPE = le.VALUE
and le.LOV_NAME = 'GRIEVANCE_TYPE') grievance_type
, g.requestor_name, g.continue_coverage_flag
, g.comments, g.creation_date, g.approved_flag,
p.first_name,p.id
from
account_relationship ar,g, person p ,account a

产生这个错误是由于子查询中的结果如果 返回结果有两个以上,就会导致oracle抛出这个错,因为查询条件不能支持多个查询参数.可以做如下修改:

select
g.id, g.account_id, g.account_relationship_id
, nvl(lov_list1.DISPLAY_NAME, ' ') as grievance_type
, g.requestor_name, g.continue_coverage_flag
, g.comments, g.creation_date, g.approved_flag, p.first_name, p.middle_initial, p.last_name, p.party_id
from
account_relationship ar,g, person p ,account a,
(SELECT l.lov_name,l.display_name,l.value,enabled from lov_list l where (lov_name='GRIEVANCE_TYPE' and enabled='T')) lov_list1

要点是通过在where条件中加入需要查询的结果子集来将数据库中保存的value替换成页面上显示的display name
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值