2013-06-24 33 views
0

在一个表中的相同列中存在的值我有一个表,如下所示:拆分,使用一个分离器

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

BID100 DTID001  Mechanical  887744 

BID101 DTID002  Automobile  045167 

BID101 DTID002  Automobile  674632 

我必须构造一个查询在存储过程中的方式,使得在通过将'BranchId'作为参数传递给查询,它将以逗号分隔单行中的相应'BranchId'的部门电话号码,但特定'BranchId'的'Phone No'存在两行中。 举例;考虑传递值“BID100”作为参数来查询/存储过程,查询将如下返回我的结果:

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

PS:我使用SQL Server 2008的

+1

看一看[这](http://stackoverflow.com/a/545672/1223446)answer – Terence

+0

这种类型的转换被称为一个枢纽。 – Ankur

回答

0

这里的例子在MS SQL服务器通过XML数据()中所示的命令是:

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

from TBLContact where branch_id = BID100 

for xml path('') 
0

使用该脚本作为基础

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'