不要在游标 PL/SQL 中显示重复值
Posted
技术标签:
【中文标题】不要在游标 PL/SQL 中显示重复值【英文标题】:Do not show duplicate values in a cursor 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;
我尝试过使用distinct
和GROUP BY
,但它仍然不断返回重复的值。有什么想法吗?
【问题讨论】:
【参考方案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;以上是关于不要在游标 PL/SQL 中显示重复值的主要内容,如果未能解决你的问题,请参考以下文章