복붙노트

[SQL] BY GROUP은 열 CONCAT / 결합 [중복]

SQL

BY GROUP은 열 CONCAT / 결합 [중복]

나는 다음과 같은 테이블이 있습니다 :

ID  User  Activity  PageURL  
 1  Me    act1      ab     
 2  Me    act1      cd     
 3  You   act2      xy     
 4  You   act2      st

나는 사용자와 내가 같은 결과가 발생하도록 활동에 의해 그룹화 할 :

User  Activity  PageURL  
Me    act1      ab, cd     
You   act2      xy, st

볼 수 있듯이, 열 PAGEURL 의해 함께 그룹에 기초 쉼표로 구분하여 조합된다.

정말 어떤 포인터 및 조언을 부탁드립니다.

해결법

  1. ==============================

    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. ==============================

    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
    
  3. from https://stackoverflow.com/questions/15154644/group-by-to-combine-concat-a-column by cc-by-sa and MIT license