Как объединить много строк с одинаковым идентификатором в SQL PDW / Azure SQL DW - PullRequest
0 голосов
/ 23 апреля 2019

Моя таблица содержит детали, как с двумя полями.Я хочу получить уникальные подробности с DisplayName, такие как: я хочу знать, как это сделать, является Параллельное хранилище данных / APS, так как функция FOR XML PATH не поддерживается в PDW.

1 Editor, Reviewer 7 EIC, Редактор, рецензент

  ID      DisplayName
  1        Editor
  1        Reviewer
  7        EIC
  7        Editor
  7        Reviewer
  7        Editor
  19       EIC
  19       Editor
  19       Reviewer

Я пробовал следующий код, который будет работать на традиционном SQL Server, но функция «For XML Path» не поддерживается в APS.

        SELECT id, displayname = 
     STUFF((SELECT DISTINCT ', ' + displayname
        FROM #t b 
         WHERE b.id = a.id 
      FOR XML PATH('')), 1, 2, '')
      FROM #t a
      GROUP BY id

1 Ответ

0 голосов
/ 24 апреля 2019

Если вы знаете фиксированный верхний счетчик для числа значений, которые будут объединены, будет работать следующий метод.

create table test1 (id integer,email varchar(255)) with (heap,distribution=round_robin);

insert into test1 (id,email) values (1,'abc@msn.com');
insert into test1 (id,email) values (1,'xyz@gmail.com');
insert into test1 (id,email) values (2,'efg@xyz.com');
insert into test1 (id,email) values (2,'efg@xyz.com');

select id as Id,concat_ws(',',[1],[2],[3],[4]) as EmailAddresses from (
    select id,[1],[2],[3],[4]
    from (
        select id,row_number() over (partition by id order by email) seq,email from (
            select distinct id,email from test1
            ) as distinctRows
        ) as numberedRows
    pivot (
        max(email) for seq in ([1],[2],[3],[4])
        ) as pivotLookup
    ) as pivotedRows
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...