0

我正在尝试编写一份报告,在此报告中,有一个子查询将根据员工的 network_Id 提取电话号码。通常网络 ID 的最后 4 位数字与员工电话号码之一的最后 4 位数字相同。我的问题是,如果一个人有两个电话号码满足第一个条件 - SUBSTR(PHONE_NUMBER, LENGTH(PHONE_NUMBER)-3, 4) = SUBSTR('DP2543',3, 4) ),那么错误地说单行子查询返回多行。你知道我怎么能解决这个问题吗?这是 phone_numbers 的代码:-

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
4

1 回答 1

0

如果您不关心您选择哪一个,请添加TOP 1您的子查询

SELECT TOP 1 phone_number FROM [etc, etc...]

如果您确实关心,那么也可以使用结束子查询ORDER BY

SELECT TOP 1 phone_number FROM [etc, etc...] ORDER BY phone_number
于 2013-07-17T19:02:43.253 回答