Sql server 2008 从存储过程中获取以逗号分隔的值
我在sqlserver中有一个表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
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);
看