Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用分隔符拆分表中同一列中的值_Sql_Sql Server 2008_Tsql - Fatal编程技术网

Sql 使用分隔符拆分表中同一列中的值

Sql 使用分隔符拆分表中同一列中的值,sql,sql-server-2008,tsql,Sql,Sql Server 2008,Tsql,我有一个如下所示的表格: TBLContact ------------------------------------------------- BranchId DepartmentId DepartmentName Phone No ------------------------------------------------- BID100 DTID001 Mechanical 123654 BID1

我有一个如下所示的表格:

                     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”的两行中。 例如考虑将值“BI100”传递给查询/存储过程的参数,查询将返回如下结果:

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

PS:我正在使用SQL Server 2008。

在MS SQL Server中通过XML data()命令显示的示例如下:

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

from TBLContact where branch_id = BID100

for xml path('')

使用此脚本作为基础

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'

看看答案这种类型的转换被称为轴心。