Не показывать повторяющиеся значения в курсоре PL / SQL

#oracle #plsql #plsqldeveloper

#Oracle #plsql #plsqldeveloper

Вопрос:

Привет, на данный момент я возвращаю эти значения

 --Group: Junior -- Name: Jared Ramirez -- Id Agent: 1
--Group: Junior -- Name: Jared Ramirez -- Id Agent: 1
--Group: Junior -- Name: Lilah Bailey -- Id Agent: 26
--Group: Junior -- NoNamebre: Lilah Bailey -- Id Agent: 26
--Group: Junior -- Name: Lilah Bailey -- Id Agent: 26
  

Но я хочу вернуть только 1 для каждого номера агента, например

 --Grupo: Junior -- Nombre: Jared Ramirez -- Id Agente: 1
--Grupo: Junior -- Nombre: Lilah Bailey -- Id Agente: 26
  
 DECLARE 
idCalls CALLS.CALL_ENTRY_ID%type;
idAgenteLlamada CALLS.ID_AGENT%type;

CURSOR c_Call (idCalls CALLS.CALL_ENTRY_ID%type) is
                                                SELECT ID_AGENT
                                                FROM CALLS                                                                                                
                                                WHERE CALL_ENTRY_ID = idCalls;

BEGIN
    OPEN c_Call (idCalls);
    FETCH c_Call INTO idAgentCall;
    WHILE c_Call %FOUND 
         LOOP
         dbms_output.put_line('--Group: '||usergroup||' -- Name: '|| userName|| ' -- Id Agent: ' || idAgentCall);
         FETCH c_Call INTO idAgentCall;
         END LOOP;
    CLOSE c_Call ;
END; 
  

Я пробовал использовать distinct и GROUP BY , но он по-прежнему продолжает возвращать повторяющиеся значения. Есть идеи?

Ответ №1:

если вы выполняете этот запрос в SQL plus, тогда вы получаете несколько строк, и если вы получаете несколько строк для ID_AGENT, то можете ли вы попробовать использовать DISTINCT и посмотреть, получаете ли вы одну строку или несколько потоков для каждого агента.

 SELECT ID_AGENT FROM CALLS WHERE CALL_ENTRY_ID = idCalls;
  

Комментарии:

1. Я использовал это SELECT DISTINCT ID_AGENT FROM CALLS WHERE CALL_ENTRY_ID = idCalls; , но даже в этом случае он продолжает возвращать повторяющийся ID_AGENT

2. Привет, попробуйте это в SQL plus и посмотрите, что вы получаете, ВЫБЕРИТЕ DISTINCT TRUNC(ID_AGENT) ИЗ ВЫЗОВОВ, ГДЕ CALL_ENTRY_ID = idCalls;