Как объединить результаты за месяц в один ряд? - PullRequest
0 голосов
/ 09 ноября 2018

Если есть таблица продаж с такими данными, как:

SALES
-----
seller_id month amount
1         1     10
1         2     15

Я бы хотел получить все продажи продавца в одну строку. Как я могу объединить результаты из таблицы в такой результат?

seller_id    jan_amount    feb_amount  
    1            10            15

EDIT:

Я могу получить ежемесячные продажи по этому запросу:

select    seller_id, month, sum(amount)
from      sales
group by  sellerd_id, month

Но это дает мне такие результаты, как:

1,1,10
1,2,15

Я надеюсь преобразовать это в:

1, 10 as JAN_AMOUNT, 15 as FEB_AMONT

1 Ответ

0 голосов
/ 09 ноября 2018

Вы можете использовать условное агрегирование до pivot ваших данных со следующим оператором SQL как:

select seller_id,
       max(case when month = 1 then amount end  ) as jan_amount,
       max(case when month = 2 then amount end  ) as feb_amount
  from sales
 where seller_id = 1
 group by seller_id;

 SELLER_ID  JAN_AMOUNT  FEB_AMOUNT
 ---------  ----------  ----------
    1           10          15

Как пользователь Oracle, вы можете использовать следующий оператор SQL с ключевым словом pivot как:

select *
  from sales
 pivot(
       sum(amount)
       for(month)
        in (1 as jan_amount ,2 as feb_amount )
   );

 SELLER_ID  JAN_AMOUNT  FEB_AMOUNT
 ---------  ----------  ----------
    1           10          15

Rextester Demo

...