Un script SQL bien utile trouvé sur le site de « Have you any wool? » qui permet de transformer en lignes des données se trouvant dans une colonne.
ici le script :
Declare @CDTable Table
(
[Base] varchar(10) not null,
[Region] varchar(10) not null,
[Centre] varchar(10) not null,
[Secteur] varchar(5) not null,
[Client] varchar(10) not null
)
Insert @CDTable
Select 'BASE01','IDFrance' ,'Paris' ,'75010','Client 1' Union All
Select 'BASE01','IDFrance' ,'Versailles','78000','Client 2' Union All
Select 'BASE02','OUEST' ,'Rennes' ,'35000','Client 3' Union All
Select 'BASE02','OUEST' ,'Brest' ,'29200','Client 4' Union All
Select 'BASE03','SUD-OUEST','Pauilhac' ,'32500','Client 5' Union All
Select 'BASE03','SUD-OUEST','Toulouse' ,'31000','Client 6' Union All
Select 'BASE03','SUD-OUEST','Bordeaux' ,'33000','Client 7'
Select Distinct
[Region],
[Base],
(Stuff((Select ',' + Centre From @CDTable T2 Where T2.Base = T1.Base and T2.Region = T2.Region FOR XML PATH('')),1,1,'')) as Centre,
(Stuff((Select ',' + Secteur From @CDTable T2 Where T2.Base = T1.Base and T2.Region = T2.Region FOR XML PATH('')),1,1,'')) as Secteur,
(Stuff((Select ',' + Client From @CDTable T2 Where T2.Base = T1.Base and T2.Region = T2.Region FOR XML PATH('')),1,1,'')) as Client
From @CDTable T1
Order By [Base]
On passe de données dans ce format
Base | Region | Centre | Secteur | Client |
BASE01 | IDFrance | Paris | 75010 | Client 1 |
BASE01 | IDFrance | Versailles | 78000 | Client 2 |
BASE02 | OUEST | Rennes | 35000 | Client 3 |
BASE02 | OUEST | Brest | 29200 | Client 4 |
BASE03 | SUD-OUEST | Pauilhac | 32500 | Client 5 |
BASE03 | SUD-OUEST | Toulouse | 31000 | Client 6 |
BASE03 | SUD-OUEST | Bordeaux | 33000 | Client 7 |
à ce format !!
Base | Region | Centre | Secteur | Client |
BASE01 | IDFrance | Paris,Versailles | 75010,78000 | Client 1,Client 2 |
BASE02 | OUEST | Rennes,Brest | 35000,29200 | Client 3,Client 4 |
BASE03 | SUD-OUEST | Pauilhac,Toulouse,Bordeaux | 32500,31000,33000 | Client 5,Client 6,Client 7 |
la fonction Stuff permet d’insérer une chaîne dans une autre chaîne. Elle efface d’abord le nombre de caractères spécifié dans la première chaîne à partir de la position de début. Ensuite, elle insère la seconde chaîne dans la première à partir de la position de début.
Pas de commentaire reçu(s)
Laisser une réponse