我正在尝试编写一份报告,在这份报告中有一个子查询,它将根据员工的network_Id提取电话号码。通常网络ID的最后4位数字与员工的一个电话号码的最后四位数字相同。我的问题是,如果一个人有两个电话号码符合第一个条件——SUBSTR(PHONE_NUMBER, LENGTH(PHONE_NUMBER)-3, 4) = SUBSTR('DP2543',3, 4) )
,那么错误地说单行子查询会返回多行。你知道我该怎么解决吗?这是电话号码的代码:-
Select (DECODE((SELECT distinct PHONE_NUMBER FROM PER_PHONES
WHERE EMPLOYEE_ID = 26022
AND SUBSTR(PHONE_NUMBER, LENGTH(PHONE_NUMBER)-3, 4) = SUBSTR('DP2543',3, 4) ), NULL, (SELECT DISTINCT PHONE_NUMBER FROM PER_PHONES
WHERE EMPLOYEE_ID = 26022 AND PHONE_TYPE = 'H1'),(SELECT DISTINCT PHONE_NUMBER FROM PER_PHONES
WHERE EMPLOYEE_ID = 26022
AND rownum=1) ) ) from dual
如果您不在乎选择哪一个,请在子查询中添加TOP 1
SELECT TOP 1 phone_number FROM [etc, etc...]
如果你真的很在意,那么也用ORDER BY
结束子查询
SELECT TOP 1 phone_number FROM [etc, etc...] ORDER BY phone_number