如果销售表中包含以下数据:
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
答案 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