Преобразовать строки пользователей в динамическое количество столбцов - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть таблица, как

_________________________
|    ACCOUNT      REP    |
|________________________|
|    Tradewind    Bob    |
|------------------------|
|    Tradewind    Joe    |
|------------------------|
|    Tradewind    Rick   |
|------------------------|
|    Headlands    Joe    |
|------------------------|
|    Headlands    Bob    |
|________________________|

И я хочу превратить это в

  _________________________________________
  |  ACCOUNT     REP1      REP2     REP3  |
  |_______________________________________| 
  |  Tradewind   Bob       Joe      Rick  |
  |---------------------------------------|
  |  Headlands   Bob       Joe      NULL  |
  |_______________________________________|

У меня есть попытка понять это и понять, что это какое-то использование ключевого слова PIVOT. Может, как-то использует SELECT OVER?

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018

Если вы хотите три столбца, то вы можете использовать условное агрегирование:

select account,
       max(case when seqnum = 1 then rep end) as Rep1,
       max(case when seqnum = 2 then rep end) as Rep2,
       max(case when seqnum = 3 then rep end) as Rep3
from (select t.*, row_number() over (partition by account order by rep) as seqnum
      from t
     ) t
group by account;
0 голосов
/ 12 сентября 2018

Вы можете использовать:

select account,
       max(case when rep='Bob' then 'Bob' end) as Rep1,
       max(case when rep='Joe' then 'Joe' end) as Rep2,
       max(case when rep='Rick' then 'Rick' end) as Rep3
  from tab
 group by account
 order by account desc;

Rextester Demo

...