2013-06-24 3 views
0

j'avoir une table, comme indiqué ci-dessous:diviser les valeurs qui existent dans la même colonne dans une table en utilisant un séparateur

     TBLContact 
------------------------------------------------- 
BranchId DepartmentId DepartmentName Phone No 
------------------------------------------------- 
BID100 DTID001  Mechanical  123654 

BID100 DTID001  Mechanical  887744 

BID101 DTID002  Automobile  045167 

BID101 DTID002  Automobile  674632 

-je structurer une requête dans une procédure stockée d'une manière telle que, en passant 'BranchId' comme paramètre à la requête, il retournera le numéro de téléphone du département correspondant de 'BranchId' dans une rangée séparée par une virgule, bien que le numéro de téléphone existe en deux lignes pour un 'BranchId' spécifique. Par exemple; Pensez à passer la valeur « BID100 » en tant que paramètre à la procédure de requête/stockée, la requête me retourner le résultat ci-dessous:

BranchId DepartmentId DepartmentName PhoneNo 
--------------------------------------------------- 
BID100 DT001  Mechanical 123654,887744 

PS: J'utilise SQL Server 2008.

+1

Jetez un oeil à [ this] (http://stackoverflow.com/a/545672/1223446) answer – Terence

+0

Ce type de transformation est connu comme un pivot. – Ankur

Répondre

0

Voici un exemple montré par les données XML() commande dans MS SQL Server est la suivante:

select PhoneNo + ', ' as 'data()' 

from TBLContact where branch_id = BID100 

for xml path('') 
0

Utilisez ce script comme base

declare @PhoneNo VARCHAR(8000) 

select @PhoneNo = COALESCE(@PhoneNo+ ', ', '') + PhoneNo 
from table 
where BranchId = 'BID100' 

select top 1 BranchId, DepartmentId, DepartmentName, @PhoneNo 
from table 
where BranchId = 'BID100' 
Questions connexes