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 server 2008 从存储过程中获取以逗号分隔的值_Sql Server 2008 - Fatal编程技术网

Sql server 2008 从存储过程中获取以逗号分隔的值

Sql server 2008 从存储过程中获取以逗号分隔的值,sql-server-2008,Sql Server 2008,我在sqlserver中有一个表 UserID(PK) Name PhoneNumber 1 Test 123456 2 Test1 356456 以及另一个具有上表的FK的表 ID RequestID UserID(FK) 1 20123 1 2 20245 1 3 21545 2 我需要的结果如下 UserID N

我在sqlserver中有一个表

UserID(PK)    Name    PhoneNumber
1             Test     123456
2             Test1    356456
以及另一个具有上表的FK的表

 ID    RequestID   UserID(FK)
  1      20123        1
  2      20245        1
  3      21545        2
我需要的结果如下

UserID    Name      phoneNumber  RequestID
 1        Test      123456       20123,20245
 2        Test1      356456       21545 
我使用了连接,但它为每一行提供了多个记录,但我需要如上所述的结果。 有人能帮我怎么得到这种输出吗

SELECT [UserID]
     , [Name]
     ,[PhoneNumber]
     , stuff((SELECT distinct ' ,'+ CAST(RequestID AS VARCHAR)
         FROM [Request] 
         WHERE (UserID = [PK].UserID) 
         FOR XML PATH ('')),1,2,''
      ) AS Request1
FROM [PK]


有几种不同的方法可以做到这一点

用于XML路径
填充

select u.userid,
  u.name,
  u.phonenumber,
  STUFF((SELECT distinct ', ' + cast(r.requestid as varchar(10))
         from requests r
         where u.userid = r.userid
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,2,'') requests
from users u;

或者您可以对XML路径使用
交叉应用

select u.userid,
  u.name,
  u.phonenumber, 
  left(r.requests, len(r.requests)-1) requests
from users u
cross apply
(
  select cast(r.requestid as varchar(10)) + ', '
  from  requests r
  where u.userid = r.userid
  FOR XML PATH('')
) r (requests);