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
| create table T1
( T1IDT integer primary key
, T1NOM varchar(50) not null
, T1PRN varchar(50) not null
, T1DDN date not null
, T1CD1 char(2) not null
, T1MAJ date not null
)
;
insert into T1
values (001, 'Dupont', 'Micheline', '1935-02-16', 'XX', '2021-06-05')
, (002, 'Martin', 'Louis', '1968-11-20', 'AB', '2020-01-10')
, (003, 'Volfoni', 'Raoul', '1916-01-01', 'VA', '1995-12-21')
, (004, 'Martin', 'Louis', '1968-11-20', 'ZZ', '2024-07-01')
, (005, 'Lesage', 'Sidonie', '1996-05-04', 'U5', '2024-10-30')
, (006, 'Volfoni', 'Raoul', '1916-01-01', 'VX', '1995-12-22')
, (008, 'Volfoni', 'Raoul', '1916-01-01', 'X8', '2025-02-01')
, (009, 'Abadie', 'Isabelle', '1998-02-20', 'BO', '2025-01-06')
;
-- considérons qu'il y a doublon si même nom, prénom et date de naissance
with dbl (dblnom, dblprn, dblddn, dblcnt) as
(select T1NOM
, T1PRN
, T1DDN
, count(*)
from T1
group by T1NOM
, T1PRN
, T1DDN
having count(*) > 1
)
select dblnom
, dblprn
, dblddn
, dblcnt
, GROUP_CONCAT(concat(T1MAJ,' : ', T1IDT, '-', T1CD1)
order by T1MAJ asc
separator ", ") as "Dtmaj : ident - Code"
from dbl
inner join T1
on T1NOM = dblnom
and T1PRN = dblprn
and T1DDN = dblddn
group by dblnom
, dblprn
, dblddn
, dblcnt |
Partager