Как транспонировать строки в столбцы в запросе - PullRequest
0 голосов
/ 20 мая 2019

У меня есть пример данных, как показано ниже

emp_id   period    name    flg   Commissions
1       201601     dummy   y     2396739.53
1       201602     dummy   y     3291814.83
1       201603     dummy   y     1418367.9
1       201604     dummy   y     2884582.31
2       201601     mummy   y     3396739.53
2       201602     mummy   y     3291814.83
2       201603     mummy   y     1428367.9
2       201604     mummy   y     7884582.31  

Мне нужно транспонировать данные, как показано ниже.

emp_id   name   flg  201601:commission  201602:commission  201603:commission  201604:commission    ------
1        dummy   y    2396739.53       3291814.83         1418367.9        2884582.31
2        mummy   y    3396739.53       3291814.83         14218367.9       7884582.31

1 Ответ

0 голосов
/ 20 мая 2019

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

select
  emp_id,
  name,
  flg,
  sum(case when period = 201601 then commissions end) as 201601_comm,
  sum(case when period = 201602 then commissions end) as 201602_comm,
  sum(case when period = 201603 then commissions end) as 201603_comm,
  sum(case when period = 201604 then commissions end) as 201604_comm,
  ...
from t
group by emp_id, name, flg
order by emp_id, name, flg

Если вы не знаете количество столбцов, вы не сможете сделать это в SQL.По сути, вам нужна операция "pivot".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...