comment utiliser la casse pour combiner les variantes d'orthographe d'un élément dans une table en SQL

J'ai deux tables SQL, avec des déviations de l'orthographe des noms de département. Je dois combiner ceux qui utilisent la casse pour créer une orthographe du nom de l'location. Budget_Rc est le seul à avoir la même orthographe dans les deux arrays. Voici un exemple:

Table-1 table-2 Depart_Name Room_Loc Depart_Name Room_Loc 1. Finance_P1 P144 1. Fin_P1 P1444 2. Budget_Rc R2c 2. Budget_Rc R2c 3. Payroll_P1_2 P1144 3. Finan_P1_1 P1444 4. PR_P1_2 P1140 

Ce que je dois faire, c'est que le ministère soit une entité, avec une seule pièce. Celles-ci doivent apparaître comme une seule pièce dans la table principale (tableau 1).

 Depart_Name Room_Loc 1. Finance_P1 F144 2. Budget_Rc R2c 3. Payroll_P1_2 P1144 

Merci beaucoup d'avance!

Je vais d'abord essayer un

 DECLARE @AllSpellings TABLE(DepName VARCHAR(100)); INSERT INTO @AllSpellings(DepName) SELECT Depart_Name FROM tbl1 GROUP BY Depart_Name UNION SELECT Depart_Name FROM tbl2 GROUP BY Depart_Name; SELECT DepName FROM @AllSpellings ORDER BY DepName 

Cela vous aidera à find toutes les valeurs existantes …

Vous créez maintenant une table propre avec tous les départements avec une colonne IDENTITY ID.

Maintenant vous avez deux choix:

Au cas où vous ne pouvez pas changer la disposition de la table

Utilisez l'option select -statement supérieure pour searchr toutes les inputs existantes et créer une table de mappage que vous pouvez utiliser comme lien indirect

Mieux: vraie relation FK

Remplacer les noms du département avec l'ID et laisser ceci être une FOREIGN KEY REFERENCE

Est-ce que plus d'un département peut être dans une pièce?

Si oui, c'est plus difficile et vous ne pouvez pas vraiment écrire une requête dynamic sans avoir une list de toutes les relations un à plusieurs possibles, comme Finance a la key de département de FIN et ils ont ces trois noms. Vous devrez définir cette table pour faire n'importe quelle sorte de relation.

Par exemple:

 DEPARTMENT TABLE ID NAME ROOMID FIN FINANCE P1444 PAY PAYROLL P1140 DEPARTMENTNAMES ID DEPARTMENTNAME DEPARTMENTID 1 Finance_P1 FIN 2 Payroll_P1_2 PAY 3 Fin_P1 FIN 

etc…

De cette façon, vous pouvez faire correspondre correctement tous les départements et leurs noms. J'utiliserais cette table de correspondance pour organiser et normaliser datatables avant de nettoyer toutes vos données, puis d'utiliser un seul nom de département. Il va être manuel mais devrait être une fois si vous nettoyez ensuite datatables.

Si la pièce ne doit appartenir qu'à un seul département, vous pouvez vous joindre à la salle, ce qui facilite grandement la tâche.

Comme il ne semble pas y avoir de règle solide pour mapper les noms des départements de la table 1 à la table 2, la façon dont j'aborderais cela est de créer une table de mapping. Cette table de correspondance reliera les deux noms de département.

 mapping Depart_Name_1 | Depart_Name_2 ----------------------------- Finance_P1 | Fin_P1 Budget_Rc | Budget_Rc Payroll_P1_2 | PR_P1_2 

Ensuite, vous pouvez faire une jointure à trois pour tout mettre dans un set de résultats unique:

 SELECT t1.*, t2.* FROM table1 t1 INNER JOIN mapping m ON t1.Depart_Name = m.Depart_Name_1 INNER JOIN table2 t2 ON m.Depart_Name_2 = t2.Depart_Name 

Cela peut sembler fastidieux de créer la table de mapping , mais cela peut être inévitable ici. Si vous pouvez imaginer un moyen de l'automatiser, cela pourrait réduire le time passé là-bas.