Объединение данных в несколько строк в одну строку - PullRequest
0 голосов
/ 05 марта 2012

Таблица представлена ​​в следующем формате:

ID     Category
1       a
1       b
2       a
2       b
2       c

Я хочу вывод в следующем формате

ID              Category
1                  a,b
2                 a,b,c

Пожалуйста, предложите эффективный способ

Ответы [ 3 ]

0 голосов
/ 05 марта 2012

В прошлый раз я сталкивался с подобной вещью и решил ее, используя процедуру. Вам нужно сделать цикл в категории для определенного идентификатора.

0 голосов
/ 05 марта 2012

Может быть, что-то вроде этого:

Данные испытаний

DECLARE @tbl TABLE(ID INT,Category VARCHAR(100))
INSERT INTO @tbl
VALUES
    (1,'a'),
    (1,'b'),
    (2,'a'),
    (2,'b'),
    (2,'c')

Запрос

;WITH CTE     ----CTE Name
AS
(
    SELECT
        ROW_NUMBER() OVER(PARTITION BY ID ORDER BY ID) AS RowNbr,
        ID,
        Category
    FROM
        @tbl AS tbl
)
SELECT
    CTE.ID,
    (
        STUFF
            ((
                SELECT
                    ','+Category
                FROM @tbl AS tbl
                WHERE tbl.ID=CTE.ID
                FOR XML PATH('')
                )
        ,1,1,'')
    ) AS Category
FROM
    CTE
WHERE
    CTE.RowNbr=1
0 голосов
/ 05 марта 2012

попробуйте следующий запрос:

 SELECT ID,  
  REPLACE(
    (SELECT  Category AS [data()] 
     FROM TableA  
     WHERE b.ID=ID
     ORDER BY Category FOR XML PATH('')),
     ' ', ', ')
FROM TableB b 
GROUP BY ID
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...