oracle ora 01427,ORA-01427:单行子查询返回多行 - 如何解决?

我有一个查询,其目的是输出所有角色为"PPC"和"paygroups"这些PPC所属的电子邮件。ORA-01427:单行子查询返回多行 - 如何解决?

有许多薪酬组。

每个paygroup可以有多个PPCs。

每个PPC可能有一个email address 1和/或一个email address 2。

的查询工作正常,当我使用测试paygroup(BOX),但是当我评论说,行出查询所有paygroups全部归还所有paygroups的PPCs我得到的错误"single-row subquery returns more than one row"。

SELECT

auth.paygroup,

per.NAME,

per.email_address AS "Personal email",

per.email_address2 AS "Business email"

FROM ps_personal_data per

INNER JOIN ps_ts_ee_auth auth

ON auth.emplid=per.emplid

INNER JOIN PS_SMS_SUBSCRB_TBL SUB

ON SUB.SUBSCRIBER_ID = AUTH.PAYGROUP

WHERE 1=1

AND SUB.EFFDT = (SELECT max (SUB2.effdt) FROM PS_SMS_SUBSCRB_TBL SUB2

WHERE SUB.SUBSCRIBER_ID = SUB2.SUBSCRIBER_ID AND SUB.EFF_STATUS = 'A')

AND auth.user_name = (SELECT R1.USER_NAME FROM PS_TS_CONTACT_ROLE R1

WHERE 1=1

AND R1.contact_role = 'PPC'

--AND R1.paygroup = 'BOX' --commenting this line out causes the error. It works fine when line is active

AND R1.action_dt = (SELECT MAX (R2.action_dt)

FROM PS_TS_CONTACT_ROLE R2

WHERE 1=1

AND R1.paygroup = R2.paygroup

AND R1.contact_role =

R2.contact_role))

2016-10-25

Craig B

+1

第1步 - 确定你想要哪一行。 –

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值