I have this table, I need to concatenate the same values from serveral columns in one row.
RowId ServerName MyApplicationName UserName StartTime LastTime UsersCount
1 Prod MyProd User1 2021/03/09 2021/03/09 10
2 DEV1 MyApp1 User1 2021/03/12 2021/03/13 3
3 DEV1 MyApp1 User1 2021/03/14 2021/03/15 3
4 DEV1 MyApp1 User1 2021/03/16 2021/03/17 4
5 DEV1 MyApp1 User1 2021/03/18 2021/03/19 5
I need following result:
RowId ServerName MyApplicationName UserName StartTime LastTime UsersCount
1 Prod MyProd User1 2021/03/09 2021/03/09 10
2 DEV1 MyApp1 User1 2021/03/12 2021/03/19 15
What I tried:
SELECT
RowId,
STUFF(
(SELECT ',' + ServerName
FROM tbl t1
WHERE t2.ServerName = t1.ServerName
FOR XML PATH(''))
, 1, 1, '')
) As ServerName,
STUFF(
(SELECT ',' + MyApplicationName
FROM tbl t1
WHERE t2.MyApplicationName = t1.MyApplicationName
FOR XML PATH(''))
, 1, 1, '')
) As MyApplicationName,
STUFF(
(SELECT ',' + UserName
FROM tbl t1
WHERE t2.UserName = t1.UserName
FOR XML PATH(''))
, 1, 1, '')
) As UserName,
MIN(StartTime) AS StartTime,
MAX(LastTime) AS LastTime,
SUM(UserCount) AS UserCount
GROUP BY ApplicationName
But it doesn't works. How do it correctly and what I did wrong?
