Como recuperar os funcionários pertencentes a mais de um proprietário usando o Oracle SQL
Pergunta
Eu tenho uma situação no Oracle onde eu tenho duas tabelas -. Tabela A e Tabela B
A Tabela A apresenta as seguintes colunas (ajuda, owner_id, app_id) e
Tabela B tem as seguintes colunas (bid, ajuda, EMP_NO)
O Quadro B tem uma chave estrangeira (auxílio) de volta para a Tabela A.
Com base nas tabelas acima, eu estou tentando escrever uma consulta onde um EMP_NO na Tabela B pertence a mais de um owner_id na Tabela A.
A regra de ouro é que um EMP_NO só pode pertencer a apenas um owner_id.
Atualmente eu tenho problemas de dados onde um EMP_NO pertence a mais de um owner_id.
Por exemplo:
Eu tenho uma situação onde EMP_NO pertence a 2 ou mais owner_ids -. São esses registros que eu preciso para recuperar de volta, mas sem saber como
Informações eu gostaria de recuperar é a seguinte:
EMP_NO e owner_id
Qualquer ajuda com consulta seria apreciada usando o Oracle SQL.
Graças.
Solução
Adaptação resposta de Astander para obter tanto o emp_no
e owner_id
:
SELECT emp_no, owner_id
FROM (
SELECT emp_no
,owner_id
,COUNT(DISTINCT owner_id) OVER (PARTITION BY emp_no) c
FROM TableB b INNER JOIN
TableA a ON b.aid = a.aid
)
WHERE c > 1;
Outras dicas
Você pode tentar algo como isto
SELECT emp_no,
COUNT(DISTINCT owner_ID)
FROM TableB b INNER JOIN
TableA a ON b.aid = a.aid
GROUP BY emp_no
HAVING COUNT(DISTINCT owner_ID) > 1