今天在工作中碰到一个问题,用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 表达式”解决方式的更多相关文章

  1. Oracle报错#“ORA-01791: 不是 SELECTed 表达式”解决方法

    今天遇到一个Oracle报错,写篇博客记录一下 简单看一下下面这个sql,这也查询是没报错的 select a.area_seq, a.area_name from t_unit_area a WHE ...

  2. Oracle报错:不是GROUP BY 表达式

    报错:不是GROUP BY 表达式 实例:select sum(hwjz),rq from JcChargeInfo where 1=1  group by rq order by jcchargec ...

  3. Oracle Ora 错误解决方案合集

    注:本文来源于 < Oracle学习笔记 --- Oracle ORA错误解决方案 > ORA-00001: 违反唯一约束条件 (.)错误说明:当在唯一索引所对应的列上键入重复值时,会触发 ...

  4. Oracle ORA

    ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常. ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 OR ...

  5. Oracle和MySQL分组查询GROUP BY

    Oracle和MySQL分组查询GROUP BY 真题1.Oracle和MySQL中的分组(GROUP BY)有什么区别? 答案:Oracle对于GROUP BY是严格的,所有要SELECT出来的字段 ...

  6. 关于ORA-00979 不是 GROUP BY 表达式错误的解释

    ORA-00979 不是 GROUP BY 表达式”这个错误,和我前面介绍的另外一个错误ORA-00937一样使很多初学oracle的人爱犯的. 我在介绍使用聚合函数中用group by来分组数据时特 ...

  7. [转]关于ORA-00979 不是 GROUP BY 表达式错误的解释

    转自:https://www.cnblogs.com/vigarbuaa/archive/2012/06/25/2561225.html ORA-00979 不是 GROUP BY 表达式”这个错误, ...

  8. 报错:不是GROUP BY 表达式

    oracle库中:group by后面必须加上你select后面所查询的所有除聚合函数之外的所有字段. 解决方法:将group by放入子查询中使用或者将select后面的所有查询字段放入group ...

  9. Oracle中With As 、Group By 语法

    比如有下面三张表,用With as  .Group By语法解决几个问题; with as :  可以用来创建临时表,作为过度的表: group by:   按照某个字段来分类: 对应字段如下: Sa ...

随机推荐

  1. 前后端分离————VUE+node(express)

    前后端分离----VUE+node(express) vue作为前端的框架,node(express)作为后端的框架.无数据库,使用端口保存数据. VUE: 使用vue-cli构建vue项目(vuea ...

  2. 【原创】(七)Linux内存管理 - zoned page frame allocator - 2

    背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版本: ...

  3. 使用LitePal升级表

    传统的升级表方式   上一篇文章中我们借助MySQLiteHelper已经创建好了news这张表,这也是demo.db这个数据库的第一个版本.然而,现在需求发生了变更,我们的软件除了能看新闻之外,还应 ...

  4. docker相关概念介绍

    关键词:docker容器与docker镜像 他们之间的关系是docker容器通过docker镜像来创建 docker镜像就是些像ubuntu15.10,ubuntu14.2一样的系统 docker容器 ...

  5. Java动手动脑第四讲课堂作业

    动手动脑1 完全“手写代码实现”随机数生成 纯随机数发生器

  6. .NET进阶篇03-Reflection反射、Attribute特性

    知识需要不断积累.总结和沉淀,思考和写作是成长的催化剂 内容目录 一.概述二.反射1.反射使用2.创建对象3.调用方法4.字段属性三.特性四.总结 一.概述 反射其实无处不在,我们用VS进行调试时候, ...

  7. 腾讯新闻抢金达人活动node同构直出渲染方案的总结

    我们的业务在展开的过程中,前端渲染的模式主要经历了三个阶段:服务端渲染.前端渲染和目前的同构直出渲染方案. 服务端渲染的主要特点是前后端没有分离,前端写完页面样式和结构后,再将页面交给后端套数据,最后 ...

  8. Oracle11g入门

    数据类型 数据类型 表示 数字 number 日期时间 date 字符串 char(长度)/varchar2(长度) 约束条件 名称 约束 唯一 unique 非空约束 not null 主键约束 p ...

  9. PHP array_reduce

    1.函数的作用:用函数迭代数组的所有元素 2.函数的参数: @params  array  $array   用于迭代的数组 @params  callable  $callback  迭代的函数 @ ...

  10. HDU 6607 Time To Get Up(状态压缩+枚举)

    题目网址: http://acm.hdu.edu.cn/showproblem.php?pid=6077 思路: 先预处理一下,将每个数字块的“X”看作1,“.”看作0,进行状态压缩转换成二进制数,用 ...