UserId FirstName LastName Role
34 Rahul Gupta Manager
34 Rahul Gupta Director
I have one stored Procedure which returns me result like this, for one record if I have two roles I get two separate rows. I want to have only one row like this:
UserId FirstName LastName Role
34 Rahul Gupta Manager,Director
Stored Procedure is :
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'
This is not working..what i am doing wrong here
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