Supprimer la duplication de données dans la requête SQL Server

J'ai une colonne dire TypeOfManager où il y aura des inputs comme

 TypeOfManager ----------------- Sales Relation S R 

Dans ce cas, je veux traiter 'R' comme Relation et 'S' comme Ventes.

Quelle sera la syntaxe de la requête dans SQL Server.

 Select Columna, Columnb, Case when TypeofManager in ('Sales','S') then 'sales' when TypeofManager in ('Relation','R') then 'Relation' Else TypeofManager end as TypeOfManager From yourtable 

Columna, colonne b ci-dessus sont à replace par les vraies colonnes dont vous avez besoin de votre table, évidemment.

Mettre à jour

 Select count(*), typeofmanager, Columna , columnb from (Select Columna, Columnb, Case when TypeofManager in ('Sales','S') then 'sales' when TypeofManager in ('Relation','R') then 'Relation' Else TypeofManager end as TypeOfManager From yourtable ) x Group by TypeofManager, Columna, columnb 

Y at-il une raison pour laquelle "S" et "R" ne peuvent pas être remplacés par "Sales" et "Relation"? Sinon, lancez simplement une requête de mise à jour avant d'exécuter la requête principale. Si c'est le cas, en supposant que les lettres sont uniques, faites simplement une requête "S%" ou "R%". Ou vous pouvez écrire une requête omni qui utilise Or / Et.

Vous pouvez créer une table principale pour conserver les types de gestionnaire

 Create TypeofManager ( ManagerTypeId char(1) not null, ManagerTypeDescription nvarchar(50) ) 

Vous pouvez ensuite vous référer à cette table à partir d'autres données de table en utilisant une colonne de key étrangère comme ManagerTypeId

Vous pouvez uniquement stocker ManagerTypeId et joindre deux tables à l'aide des colonnes ManagerTypeId