【问题标题】:Do not show duplicate values ​in a cursor PL/SQL不要在游标 PL/SQL 中显示重复值
【发布时间】:2020-11-02 01:16:28
【问题描述】:

您好,此时我正在返回这些值

--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; 

我尝试过使用distinctGROUP BY,但它仍然不断返回重复的值。有什么想法吗?

【问题讨论】:

    标签: oracle plsql plsqldeveloper


    【解决方案1】:

    如果您在 SQL plus 中执行此查询,那么您是否会获得多行,并且如果您为 ID_AGENT 获得多行,那么您是否可以尝试使用 DISTINCT 并查看每个代理是否获得一行或多个牵引。

    SELECT ID_AGENT FROM CALLS WHERE CALL_ENTRY_ID = idCalls;
    

    【讨论】:

    • 我用过这个SELECT DISTINCT ID_AGENT FROM CALLS WHERE CALL_ENTRY_ID = idCalls; 但即便如此它仍然会返回重复的 ID_AGENT
    • 嗨,在 SQL plus 中试试这个,你会看到,SELECT DISTINCT TRUNC(ID_AGENT) FROM CALLS WHERE CALL_ENTRY_ID = idCalls;
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-03
    • 2012-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    相关资源
    最近更新 更多