Oracle列转行,行转列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle列转行,行转列相关的知识,希望对你有一定的参考价值。

我现在的表如下:

产品名称 销售额 季度
奶酪 50 第一季度
奶酪 60 第二季度
啤酒 50 第二季度
啤酒 80 第四季度
。。。
。。。
想转换成如下格式
产品名称 第一季度销售额 第二季度销售额 第三季度销售额 第四季度销售额
奶酪 50 60 0 0
啤酒 0 50 0 80

请问该如何转换呢~产品名称的数据量很大,非常感激,Oracle的~

oracle下可以用函数decode处理:

select 产品名称,
sum(decode(季度,'第一季度',销售额,0)) 第一季度销售额,
sum(decode(季度,'第二季度',销售额,0)) 第二季度销售额,
sum(decode(季度,'第三季度',销售额,0)) 第三季度销售额,
sum(decode(季度,'第四季度',销售额,0)) 第四季度销售额,
from 表名
group by 产品名称;
参考技术A select 产品名称,sum(case when 季度='第一季度' then 销售额 else 0 end) as 第一季度销售额,
sum(case when 季度='第二季度' then 销售额 else 0 end) as 第二季度销售额,
sum(case when 季度='第三季度' then 销售额 else 0 end) as 第三季度销售额,
sum(case when 季度='第四季度' then 销售额 else 0 end) 第四季度销售额
from 表名 group by 产品名称;
参考技术B select 产品名称,
max(case when 季度=‘第一季度’then 销售额 else 0 end)as 第一季度销售额,
max(case when 季度=‘第二季度’then 销售额 else 0 end)as 第二季度销售额,
max(case when 季度=‘第三季度’then 销售额 else 0 end)as 第三季度销售额,
max(case when 季度=‘第四季度’then 销售额 else 0 end)as 第四季度销售额,
sum(销售额)as 总销售额 /////可可选可不选
from 表
group by 产品名称
having sum(销售额)>数值 /////可选可不选

Hive 行转列 & 列转行

参考技术A hive中行转列和列转行比较常见,一般是用于中间数据的生产。

行转列一般采用IF进行判断,筛选出本列对应的数据进行统计。

如果我们直接

就会报错

那么,我们由此引入LATERAL VIEW函数

对一列进行炸裂,其他列保持不变

对多列进行炸裂,其他列保持不变

行和列转换的问题主要解决存储和计算过程中关联关系不对等的问题。

以上是关于Oracle列转行,行转列的主要内容,如果未能解决你的问题,请参考以下文章

MySQL行转列与列转行

SAS行转列&&列转行

oracle 行转列 ,这个要怎么转

【求助】有关oracle 动态行转列

SQL2000行转列于列转行问题,急~~~ (部门是不确定几个的)

oracle行转列sql怎么写?