oracle 行转列:
表结构如下:
产品名称 销售额 季度 奶酪 50 第一季度 奶酪 60 第二季度 啤酒 50 第二季度 啤酒 80 第四季度
想要转换成如下格式:
产品名称 第一季度销售额 第二季度销售额 第三季度销售额 第四季度销售额 奶酪 50 60 0 0 啤酒 0 50 0 80
建表语句:
crate table sales(
product_name varchar2(10),
sale_total number(5),
quarter varcahr2(10)
);
行转列语句,保存到视图中:
create or replace view v_sales(名称,第一季度销售额,第二季度销售额,第三季度销售额,第四季度销售额)
as
select product_name,
sum(decode(quarter,'第一季度',sale_total,0)),
sum(decode(quarter,'第二季度',sale_total,0)),
sum(decode(quarter,'第三季度',sale_total,0)),
sum(decode(quarter,'第四季度',sale_total,0))
from sales
group by product_name
查询视图,可得到想要转换格式:
select × from v_sales
decode语法解释:
decode (expression, search, result, default)
decode函数比较表达式和搜索字,如果匹配,返回结果result;如果不匹配,返回default值;如果未定义default值,则返回空值。