sql行转列:越简单越好

下图为需求:

sql行转列:越简单越好_第1张图片



sql脚本:

--oracle 10g
create table tbArea(id number,product varchar2(50),area varchar2(50),num number);

insert into tbArea(id,product,area,num)
select 1,'A','华北',1 from dual union 
select 2,'A','华北',2 from dual union 
select 3,'A','华东',3 from dual union 
select 4,'A','华东',4 from dual union 
select 5,'B','华南',1 from dual union 
select 6,'B','东北',2 from dual union 
select 7,'B','西南',3 from dual;


select * from tbArea;


---牛b的sql语句:

--方法1:两次group by
select product 商品,sum(type) 分布地区,sum(num) 数量 from (
  select product  ,area  ,sum(num) num,1 type from tbArea
  group by product,area
)group by product;


--方法2:distinct
select  product 商品,count(distinct(area)) 分布地区,sum(num) 数量 from tbArea group by product;



--drop table tbArea;


你可能感兴趣的:(SQL行转列,countdistinct列)