2014-04-04 5 views
0

У меня есть 2 таблицы i.e table1 и table2. Обе таблицы имеют реляционный ключ mer_nbr. Однако в таблице 2 есть записи, которые повторяются, и нам нужно их выяснить.Поиск повторяющихся записей с использованием 2 таблиц

Примеры данных. Таблица1

colA colB colC mer_nbr 
1 01-Apr 03-Apr 1 
2 02-Apr 03-Apr 2 
3 03-Apr 04-Apr 3 
4 04-Apr 05-Apr 4 

Table2 
colD colE colF mer_nbr delay 
1 01-Apr 03-Apr 1  1 
2 01-Apr 03-Apr 1  2 
3 01-Apr 03-Apr 2  3 
4 04-Apr 05-Apr 4  4 

В результате мне нужно mer_nbr 1, который имеет 2 записи в table2 с различной задержкой, но тот же период, т.е. 01-апр-03 и апр.

Я попытался с помощью select table2.* from table1, table2 WHERE table2.colE = '01-APR-14' AND table2.colF = '03-APR-14'AND table1.mer_nbr = table2.mer_nbr;

Однако я получаю детали для mer_nbr = 2, а также. Мне нужно только получить результирующий набор с 2-мя рядами, показанными на mer_nbr 1. т.е.

colD colE colF mer_nbr delay 
1 01-Apr 03-Apr 1  1 
2 01-Apr 03-Apr 1  2 

Просьба помочь.

ответ

0

Вы можете попробовать это

with T as 
(

select 1 as colD,to_date('01-04-2014','dd-mm-yyyy') as colE,to_date('03-04-2014','dd-mm-yyyy') as colF,1 as mem_nbr,1 as delay from dual 
union 
select 2 as colD,to_date('01-04-2014','dd-mm-yyyy') as colE,to_date('03-04-2014','dd-mm-yyyy') as colF,1 as mem_nbr,2 as delay from dual 
union 
select 3 as colD,to_date('01-04-2014','dd-mm-yyyy') as colE,to_date('03-04-2014','dd-mm-yyyy') as colF,2 as mem_nbr,3 as delay from dual 
union 
select 4 as colD,to_date('04-04-2014','dd-mm-yyyy') as colE,to_date('05-04-2014','dd-mm-yyyy') as colF,4 as mem_nbr,4 as delay from dual 

) 

select * from 
(
select colD,colE,colf,mem_nbr,delay,count(*) over(partition by cole,colf,mem_nbr) as cnt 
from T 
) where cnt>1 
Смежные вопросы