如何将月度结果合并为一行?

时间:2018-11-09 19:20:12

标签: sql oracle pivot

如果销售表中包含以下数据:

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

我想在一行中检索所有卖方的销售。如何将表格中的结果合并成这样的结果?

seller_id    jan_amount    feb_amount  
    1            10            15

编辑:

我可以通过以下查询获取每月销售额:

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 :(得分:2)

您可以使用条件聚合并通过以下SQL语句 pivot 来:

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用户,您可以将以下带有pivot关键字的SQL语句用作:

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