将多行追加到SQL中的单个列(分组连接)

将多行追加到SQL中的单个列(分组连接),sql,sql-server,Sql,Sql Server,我有一个存储过程,它像这样返回我的结果,对于一条记录,如果我有两个角色,我会得到两个单独的行。我只想有这样一行: UserId FirstName LastName Role 34 Rahul Gupta Manager 34 Rahul Gupta Director 存储过程是: UserId FirstName LastName Role 34 Rahul Gu

我有一个存储过程,它像这样返回我的结果,对于一条记录,如果我有两个角色,我会得到两个单独的行。我只想有这样一行:

UserId  FirstName   LastName    Role
    34      Rahul       Gupta       Manager
    34      Rahul       Gupta       Director
存储过程是:

UserId  FirstName   LastName    Role
34      Rahul       Gupta       Manager,Director
这不管用我做错了什么

SELECT [USER].[USER_ID] AS [UserId]
      ,[FIRST_NM] AS FirstName
      ,[LST_NM] AS LastName
      ,[Role].[ROLE_ID] AS RoleId
      ,[Role].[ROLE_NM] AS Role
FROM [dbo].[USER] [User] (NOLOCK)
INNER JOIN dbo.USER_ROLE [USER_ROLE] on [User].USER_ID=[USER_ROLE].USER_ID
INNER JOIN dbo.ROLE [Role] on [Role].ROLE_ID=[USER_ROLE].ROLE_ID
WHERE [USER].[SSO_ID] = 'xyz' 

如果这是一个特定于SQL Server的问题,最好您也标记它。我希望您也知道使用NOLOCK的风险。您能解释一下使用NOLOCK的风险吗?这里有一个链接可能会有所帮助。
SELECT [USER].[USER_ID] [UserId]    
       ,[FIRST_NM] AS FirstName  
      ,[LST_NM] AS LastName        
        , (STUFF((SELECT CAST(', ' + [Role].[ROLE_NM] AS VARCHAR(MAX)) 

FROM [dbo].[USER] [User] (NOLOCK)       
INNER JOIN dbo.USER_ROLE [USER_ROLE] on [User].USER_ID=[USER_ROLE].USER_ID        
INNER JOIN dbo.ROLE [Role] on [Role].ROLE_ID=[USER_ROLE].ROLE_ID     
WHERE [USER].[SSO_ID] = 'a40ecdebfef84f099f74c4d9cf537929'  
FOR XML PATH ('')), 1, 2, '')) AS Roles