GROUP BY для объединения/согласования столбца
У меня есть таблица следующим образом:
ID User Activity PageURL
1 Me act1 ab
2 Me act1 cd
3 You act2 xy
4 You act2 st
Я хочу группировать по User и Activity, чтобы в итоге получилось что-то вроде:
User Activity PageURL
Me act1 ab, cd
You act2 xy, st
Как вы можете видеть, столбец PageURL объединяется вместе, разделенный запятой на основе группы.
Был бы очень признателен за любые указания и советы.
Ответы
Ответ 1
SELECT
[User], Activity,
STUFF(
(SELECT DISTINCT ',' + PageURL
FROM TableName
WHERE [User] = a.[User] AND Activity = a.Activity
FOR XML PATH (''))
, 1, 1, '') AS URLList
FROM TableName AS a
GROUP BY [User], Activity
Ответ 2
Хороший вопрос. Должен сказать вам, что потребовалось некоторое время, чтобы взломать этот. Вот мой результат.
DECLARE @TABLE TABLE
(
ID INT,
USERS VARCHAR(10),
ACTIVITY VARCHAR(10),
PAGEURL VARCHAR(10)
)
INSERT INTO @TABLE
VALUES (1, 'Me', 'act1', 'ab'),
(2, 'Me', 'act1', 'cd'),
(3, 'You', 'act2', 'xy'),
(4, 'You', 'act2', 'st')
SELECT T1.USERS, T1.ACTIVITY,
STUFF(
(
SELECT ',' + T2.PAGEURL
FROM @TABLE T2
WHERE T1.USERS = T2.USERS
FOR XML PATH ('')
),1,1,'')
FROM @TABLE T1
GROUP BY T1.USERS, T1.ACTIVITY