将多行追加到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