Bonjour,
Je réalise un traitement de gestion des doublons dans des données clients.
Pour ce faire, je cherche les doublons sur le nom, le prénom et le code postal.
Mais on a beaucoup de doublons avec inversion du nom et du prénom.
Donc mon traitement ressemble à cela :
Cela fonctionne très bien pour générer ma table de doublons.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 --Autojointure avec : WHERE t1.CodeClient<> t2.CodeClient AND t1.Nom= t2.Nom AND t1.Prenom= t2.Prenom AND t1.CPostal = t2.CPostal UNION --Autojointure avec : WHERE t1.CodeClient<> t2.CodeClient AND t1.Prenom= t2.Nom AND t1.Nom= t2.Prenom AND t1.CPostal = t2.CPostal
Mais je souhaite avoir un ID pour identifier les groupes de doublons
Qu'ils soient issus du premier test ou du deuxième
L'idée serait d'avoir une sortie de ce type:
Si vous avez une idée ou une piste à me donner cela sera top !!!
Merci beaucoup
Jean
PS : Mon code complet est ci-dessous
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
58
59
60
61
62
63
64
65
66
67
68
69
70 INSERT INTO QDD.dbo.QDD_Doublons_ICAR SELECT CONVERT(VARCHAR(10),'''+@Nom_Instance_Icar+''') AS Nom_Instance_Icar , t3.Nombre As Nom_Collaborateur , t3.Pers AS Id_Collaborateur , t3.Descrip AS Type_Poste_Collaborateur , t1.AltaUsuario AS Id_Utilisateur , t1.* , CASE WHEN t4.Codigo IS NULL THEN 0 WHEN t4.Codigo IS NOT NULL THEN 1 ELSE 2 END AS Top_tgClienteFac , 0 AS Top_NomPrenom , '''+@Vision_Ctrx +''' AS Vision_Ctrx , '''+ CONVERT(VARCHAR, @Date_Ctrx , 103) + ''' AS Date_Ctrx , SYSDATETIME() AS Date_Execution FROM (SELECT * FROM ['+@Id_Serveur+'].['+@Nom_BDD_Icar+'].[dbo].tgCliente WHERE BAJA = 0 AND AltaFec < '''+ CONVERT(VARCHAR, @Date_Ctrx , 31) + ''') t1 LEFT JOIN [QDD].[dbo].[Table_Utilisateurs_ICAR] t3 ON t1.AltaUsuario = t3.Pers AND t3.Nom_Instance_Icar = '''+@Nom_Instance_Icar+''' LEFT JOIN (SELECT DISTINCT Codigo FROM ['+@Id_Serveur+'].['+@Nom_BDD_Icar+'].[dbo].tgClienteFac) t4 ON t1.Codigo = t4.Codigo WHERE EXISTS ( SELECT * FROM (SELECT * FROM ['+@Id_Serveur+'].['+@Nom_BDD_Icar+'].[dbo].tgCliente WHERE BAJA = 0 AND AltaFec < '''+ CONVERT(VARCHAR, @Date_Ctrx , 31) + ''') t2 WHERE t1.Codigo <> t2.Codigo AND t1.Apellido1 = t2.Apellido1 AND t1.Nombre = t2.Nombre AND t1.CPostal = t2.CPostal ) UNION SELECT CONVERT(VARCHAR(10),'''+@Nom_Instance_Icar+''') AS Nom_Instance_Icar , t3.Nombre As Nom_Collaborateur , t3.Pers AS Id_Collaborateur , t3.Descrip AS Type_Poste_Collaborateur , t1.AltaUsuario AS Id_Utilisateur , t1.* , CASE WHEN t4.Codigo IS NULL THEN 0 WHEN t4.Codigo IS NOT NULL THEN 1 ELSE 2 END AS Top_tgClienteFac , 1 AS Top_NomPrenom , '''+@Vision_Ctrx +''' AS Vision_Ctrx , '''+ CONVERT(VARCHAR, @Date_Ctrx , 103) + ''' AS Date_Ctrx , SYSDATETIME() AS Date_Execution FROM (SELECT * FROM ['+@Id_Serveur+'].['+@Nom_BDD_Icar+'].[dbo].tgCliente WHERE BAJA = 0 AND AltaFec < '''+ CONVERT(VARCHAR, @Date_Ctrx , 31) + ''') t1 LEFT JOIN [QDD].[dbo].[Table_Utilisateurs_ICAR] t3 ON t1.AltaUsuario = t3.Pers AND t3.Nom_Instance_Icar = '''+@Nom_Instance_Icar+''' LEFT JOIN (SELECT DISTINCT Codigo FROM ['+@Id_Serveur+'].['+@Nom_BDD_Icar+'].[dbo].tgClienteFac) t4 ON t1.Codigo = t4.Codigo WHERE EXISTS ( SELECT * FROM (SELECT * FROM ['+@Id_Serveur+'].['+@Nom_BDD_Icar+'].[dbo].tgCliente WHERE BAJA = 0 AND AltaFec < '''+ CONVERT(VARCHAR, @Date_Ctrx , 31) + ''') t2 WHERE t1.Codigo <> t2.Codigo AND t1.Apellido1 = t2.Nombre AND t1.Nombre = t2.Apellido1 AND t1.CPostal = t2.CPostal ) AND NOT EXISTS ( SELECT Codigo FROM (SELECT * FROM ['+@Id_Serveur+'].['+@Nom_BDD_Icar+'].[dbo].tgCliente WHERE BAJA = 0 AND AltaFec < '''+ CONVERT(VARCHAR, @Date_Ctrx , 31) + ''') t2 WHERE t1.Codigo <> t2.Codigo AND t1.Apellido1 = t2.Apellido1 AND t1.Nombre = t2.Nombre AND t1.CPostal = t2.CPostal )
Partager