Oracle“ORA-00979:不是GROUP BY 表达式”解决方式
今天在工作中碰到一个问题,用group by 语句进行分组时出现ORA-00979错误。
代码如下:


select R.ORDER_NO,
R.PRODUCT_CODE,
R.REGION_NO,
R.ORGAN_NEW_NO,
R.ORGAN_NAME,
R.ERROR_TYPE,
R.SALE_DISCOUNT,
R.SALE_NUM,
R.REMARK,
DECODE(R.ERROR_TYPE,
'',
'数量异常',
'',
'折扣异常',
'',
'提前销售') ERROR_TYPE_DES,
A.REGION_NAME REGION_NAME,
P.PUTONSALE_DATE PUTONSALE_DATE,
P.REMARK PRODUCT_LEVEL,
P.SALE_DATE SALE_DATE
from U_MD_WX2.ITSC_MSG_ABNORMAL_RECORD R,
U_MD_WX2.ITSC_PUTONSALE_INFO P,
U_MD_WX2.ITSC_AREA_CONFIG A
WHERE R.REGION_NO = A.REGION_NO
and R.PRODUCT_CODE = P.PRODUCT_CODE
group by R.ORDER_NO,
R.PRODUCT_CODE,
R.REGION_NO,
R.ORGAN_NEW_NO,
R.ORGAN_NAME,
R.ERROR_TYPE,
R.SALE_DISCOUNT,
R.SALE_NUM,
DECODE(R.ERROR_TYPE,
'',
'数量异常',
'',
'折扣异常',
'',
'提前销售'),
A.REGION_NAME,
P.PUTONSALE_DATE,
SALE_DATE
代码
运行时出现以下错误:

经自己排查后,发现是group by后面缺少字段。
本以为,查询所有字段,然后按照其中几个字段进行分组。。。
仔细想想后,我太傻了,查询所有字段怎么可用只用部分字段进行分组,又没有使用聚合函数。
正确的方式应该是查询多少字段,group by 后面就要加上多少字段。
正确的代码如下:


select R.ORDER_NO,
R.PRODUCT_CODE,
R.REGION_NO,
R.ORGAN_NEW_NO,
R.ORGAN_NAME,
R.ERROR_TYPE,
R.SALE_DISCOUNT,
R.SALE_NUM,
R.REMARK,
DECODE(R.ERROR_TYPE,
'',
'数量异常',
'',
'折扣异常',
'',
'提前销售') ERROR_TYPE_DES,
A.REGION_NAME REGION_NAME,
P.PUTONSALE_DATE PUTONSALE_DATE,
P.REMARK PRODUCT_LEVEL,
P.SALE_DATE SALE_DATE
from U_MD_WX2.ITSC_MSG_ABNORMAL_RECORD R,
U_MD_WX2.ITSC_PUTONSALE_INFO P,
U_MD_WX2.ITSC_AREA_CONFIG A
WHERE R.REGION_NO = A.REGION_NO
and R.PRODUCT_CODE = P.PRODUCT_CODE
group by R.ORDER_NO,
R.PRODUCT_CODE,
R.REGION_NO,
R.ORGAN_NEW_NO,
R.ORGAN_NAME,
R.ERROR_TYPE,
R.SALE_DISCOUNT,
R.SALE_NUM,
R.REMARK,
DECODE(R.ERROR_TYPE,
'',
'数量异常',
'',
'折扣异常',
'',
'提前销售'),
A.REGION_NAME,
P.PUTONSALE_DATE,
P.REMARK,
SALE_DATE
代码
Oracle基础还要补啊。
Oracle“ORA-00979:不是GROUP BY 表达式”解决方式的更多相关文章
- Oracle报错#“ORA-01791: 不是 SELECTed 表达式”解决方法
今天遇到一个Oracle报错,写篇博客记录一下 简单看一下下面这个sql,这也查询是没报错的 select a.area_seq, a.area_name from t_unit_area a WHE ...
- Oracle报错:不是GROUP BY 表达式
报错:不是GROUP BY 表达式 实例:select sum(hwjz),rq from JcChargeInfo where 1=1 group by rq order by jcchargec ...
- Oracle Ora 错误解决方案合集
注:本文来源于 < Oracle学习笔记 --- Oracle ORA错误解决方案 > ORA-00001: 违反唯一约束条件 (.)错误说明:当在唯一索引所对应的列上键入重复值时,会触发 ...
- Oracle ORA
ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常. ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 OR ...
- Oracle和MySQL分组查询GROUP BY
Oracle和MySQL分组查询GROUP BY 真题1.Oracle和MySQL中的分组(GROUP BY)有什么区别? 答案:Oracle对于GROUP BY是严格的,所有要SELECT出来的字段 ...
- 关于ORA-00979 不是 GROUP BY 表达式错误的解释
ORA-00979 不是 GROUP BY 表达式”这个错误,和我前面介绍的另外一个错误ORA-00937一样使很多初学oracle的人爱犯的. 我在介绍使用聚合函数中用group by来分组数据时特 ...
- [转]关于ORA-00979 不是 GROUP BY 表达式错误的解释
转自:https://www.cnblogs.com/vigarbuaa/archive/2012/06/25/2561225.html ORA-00979 不是 GROUP BY 表达式”这个错误, ...
- 报错:不是GROUP BY 表达式
oracle库中:group by后面必须加上你select后面所查询的所有除聚合函数之外的所有字段. 解决方法:将group by放入子查询中使用或者将select后面的所有查询字段放入group ...
- Oracle中With As 、Group By 语法
比如有下面三张表,用With as .Group By语法解决几个问题; with as : 可以用来创建临时表,作为过度的表: group by: 按照某个字段来分类: 对应字段如下: Sa ...
随机推荐
- JAVA MyBatis配置文件用properties引入外部配置文件
方式一:通过properties 元素的子元素来传递数据 例如: <properties> <property name="driver" value=" ...
- ASP.NET Web API 2系列(二):灵活多样的路由配置
1. 导言 路由系统是请求消息进入ASP.NET Web API消息处理管道的第一道屏障,其根本目的在于利用注册的路由对请求的URL进行解析以确定目标HTTPController和Action的名称, ...
- Java8新特性时间日期库DateTime API及示例
Java8新特性的功能已经更新了不少篇幅了,今天重点讲解时间日期库中DateTime相关处理.同样的,如果你现在依旧在项目中使用传统Date.Calendar和SimpleDateFormat等API ...
- IntelliJ IDEA使用JUnit单元测试
转载:https://www.cnblogs.com/huaxingtianxia/p/5563111.html 前言 单元测试的基本使用 一.环境配置 使用idea IDE 进行单元测试,首先需要安 ...
- Spring Boot2 系列教程(十三)Spring Boot 中的全局异常处理
在 Spring Boot 项目中 ,异常统一处理,可以使用 Spring 中 @ControllerAdvice 来统一处理,也可以自己来定义异常处理方案.Spring Boot 中,对异常的处理有 ...
- 算法学习之剑指offer(十一)
一 题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. import java.util.*; ...
- Python:numpy中shape和reshape的用法
>>> w=np.zeros((5,6))>>> warray([[ 0., 0., 0., 0., 0., 0.], [ 0., 0., ...
- C#调用RabbitMQ实现消息队列
前言 我在刚接触使用中间件的时候,发现,中间件的使用并不是最难的,反而是中间件的下载,安装,配置才是最难的. 所以,这篇文章我们从头开始学习RabbitMq,真正的从头开始. 关于消息队列 其实消息队 ...
- caffe中batch norm源码阅读
1. batch norm 输入batch norm层的数据为[N, C, H, W], 该层计算得到均值为C个,方差为C个,输出数据为[N, C, H, W]. <1> 形象点说,均值的 ...
- vue-router之to属性赋值
to属性赋值 <!-- html --> <div id="app"> <router-link to="/bj/朝阳区"> ...