oracle行转列总是出现ora-00906出现缺失左括号

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle行转列总是出现ora-00906出现缺失左括号相关的知识,希望对你有一定的参考价值。

select studname, coursename, cscore, uscore,
sum(decode(subject,'摔跤',grade,null)) as 摔跤,
sum(decode(subject,'军事理论',grade,null)) as 军事理论,
sum(decode(subject,'数学',grade,null)) as 数学
from table student1
group by studname, coursename, cscore, uscore;

参考技术A from 直接接表名。
你写的

from table student1
table多余,直接写 from student1

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(销售额)>数值 /////可选可不选

以上是关于oracle行转列总是出现ora-00906出现缺失左括号的主要内容,如果未能解决你的问题,请参考以下文章

SQL语句实现行转列

oracle行转列sql怎么写?

oracle行转列sql怎么写?

Hive 行转列 & 列转行

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

Oracle列转行,行转列