1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
|
create table data_source (
id number(19,0),
nom varchar2(64),
prenom varchar2(64),
num_employe varchar2(64),
num_service varchar2(64)
);
insert into data_source(id, nom, prenom, num_employe, num_service)
values(1, 'DUPONT', 'Jean', 'ne1', 'ns1') ;
insert into data_source(id, nom, prenom, num_employe, num_service)
values(2, 'DUPONT', 'Jean', 'ne2', 'ns2') ;
insert into data_source(id, nom, prenom, num_employe, num_service)
values(2, 'DUPONT', 'Jean', 'ne3', 'ns3') ;
insert into data_source(id, nom, prenom, num_employe, num_service)
values(3, 'MARTIN', 'Jacques', 'ne4', 'ns1') ;
insert into data_source(id, nom, prenom, num_employe, num_service)
values(4, 'MARTIN', 'Jacques', 'ne4', 'ns2') ;
insert into data_source(id, nom, prenom, num_employe, num_service)
values(4, 'MARTIN', 'Jacques', 'ne4', 'ns3') ;
insert into data_source(id, nom, prenom, num_employe, num_service)
values(5, 'DURAND', 'Paul', 'ne5', 'ns1') ;
insert into data_source(id, nom, prenom, num_employe, num_service)
values(6, 'DURAND', 'Paul', 'ne6', 'ns2') ;
insert into data_source(id, nom, prenom, num_employe, num_service)
values(6, 'DURAND', 'Paul', 'ne7', 'ns2') ;
insert into data_source(id, nom, prenom, num_employe, num_service)
values(7, 'GASPARD', 'Pierre', 'ne8', 'ns1') ;
insert into data_source(id, nom, prenom, num_employe, num_service)
values(9, 'GASPARD', 'Pierre', 'ne10', 'ns2') ;
insert into data_source(id, nom, prenom, num_employe, num_service)
values(8, 'GASPARD', 'Pierre', 'ne9', 'ns2') ;
insert into data_source(id, nom, prenom, num_employe, num_service)
values(9, 'GASPARD', 'Pierre', 'ne11', 'ns3') ;
with a_2_ids as (
select nom, prenom from data_source
group by nom, prenom having(count(distinct id) = 2)
)
select distinct d1.nom, d1.prenom from data_source d1
where (d1.nom, d1.prenom) in (select * from a_2_ids)
and exists(
select d2.id from data_source d2
where d1.nom = d2.nom and d1.prenom = d2.prenom
group by d2.id having (count(distinct num_employe) > 1)
)
and exists(
select d2.id from data_source d2
where d1.nom = d2.nom and d1.prenom = d2.prenom
group by d2.id having (count(distinct num_service) > 1)
)
; |
Partager