Как вы упомянули, что вы хотите выводить, когда номер контракта повторяется с уникальными идентификаторами, вы можете использовать существующий, чтобы выяснить случаи, когда у вас есть номер контракта, имеющий более одного уникального идентификатора, и получить вывод таким образом.
with cte as (
select '1' as Contract_No, '0090' as ORIGINAL_CONTRACT_NUMBER, '789' as Cust_ID
from dual union all
select '1-01' as Contract_No, '0090' as ORIGINAL_CONTRACT_NUMBER, '654' as Cust_ID
from dual union all
select '1-02' as Contract_No, '0090' as ORIGINAL_CONTRACT_NUMBER, '123' as Cust_ID
from dual union all
select '2' as Contract_No, '0093' as ORIGINAL_CONTRACT_NUMBER, '001' as Cust_ID
from dual union all
select '2 -01' as Contract_No, '0093' as ORIGINAL_CONTRACT_NUMBER, '001' as Cust_ID
from dual union all
select '3' as Contract_No, '0094' as ORIGINAL_CONTRACT_NUMBER, '666' as Cust_ID
from dual union all
select '4' as Contract_No, '0095' as ORIGINAL_CONTRACT_NUMBER, '999' as Cust_ID
from dual union all
select '4-01' as Contract_No, '0095' as ORIGINAL_CONTRACT_NUMBER, '888' as
Cust_ID from dual union all
select '5' as Contract_No, '0096' as ORIGINAL_CONTRACT_NUMBER, '002' as
Cust_ID from dual union all
select '5-01' as Contract_No, '0096' as ORIGINAL_CONTRACT_NUMBER, '002' as
Cust_ID from dual union all
select '6' as Contract_No, '0097' as ORIGINAL_CONTRACT_NUMBER, '555' as
Cust_ID from dual)
Запрос:
select * from cte co
where exists (select c1.ORIGINAL_CONTRACT_NUMBER, count(distinct c1.cust_ID)
DifferentID from cte c1
where c1.ORIGINAL_CONTRACT_NUMBER = co.ORIGINAL_CONTRACT_NUMBER
group by c1.ORIGINAL_CONTRACT_NUMBER
having count(distinct c1.cust_ID) > 1) ;
Вывод:
CONTRACT_NO ORIGINAL_CONTRACT_NUMBER CUST_ID
1 0090 789
1-01 0090 654
1-02 0090 123
4 0095 999
4-01 0095 888