Oracle的“ORA-00937: 不是单组分组函数” 如何解决?

之前在编写oracle的sql语句时遇到这个问题,这里做个记录

问题描述:ORA-00937: 不是单组分组函数

问题原因:select语句中又在查询某一列的值,其中还有聚合函数

原先本人编写SQL是这样的

--查找配送单的收货配送点、送货配送点、配送包数量--
select R_DELIVEPOINT_ID,S_DELIVEPOINT_ID,SUM(PACK_NUM) PACK_NUM from TMS_DELIVERY;

其中,用到聚合函数SUM(),执行时导致这个问题

如果要解决这个问题,SQL语法可以改成这样:

1)取消聚合函数

--查找配送单的收货配送点、送货配送点、配送包数量--
select R_DELIVEPOINT_ID,S_DELIVEPOINT_ID,PACK_NUM from TMS_DELIVERY;

2)支持聚合函数(添加group by)

--查找配送单的收货配送点、送货配送点、配送包数量--
select R_DELIVEPOINT_ID,S_DELIVEPOINT_ID,SUM(PACK_NUM) PACK_NUM  from TMS_DELIVERY
group by R_DELIVEPOINT_ID,S_DELIVEPOINT_ID;

参考网址:

https://blog.csdn.net/weixin_43705313/article/details/99290635

原文地址:https://www.cnblogs.com/xielong/p/11881136.html

时间: 2025-01-18 04:50:19

Oracle的“ORA-00937: 不是单组分组函数” 如何解决?的相关文章

Error:ORA-00937: 非单组分组函数错误

ORA-00937: 非单组分组函数错误 select count(*), t.user_name from sys_user t, sys_department a, sys_dep_type d where t.dep_id = a.dep_id and a.dep_id = d.dep_id and t.recd_is_del = 0 <strong>group by t.user_name</strong> 此错误,关键在于聚合函数,也就是count(*) 原因是DB无法操

ORA-00937:不是单组分组函数_Oracle

Demo: 1 SELECT USER_ID, 2 USER_NAME, 3 USER_SEX, 4 MAX(USER_AGE), 5 SUM(USER_MONEY) AS USER_MONEY 6 USER_TEL, 7 USER_EMAIL, 8 USER_ADD, 9 USER_STATUS, 10 FROM USERS 11 ORDER BY USER_NAME, USER_SEX, USER_STATUS; 12 类似这种,多个字段的GROUP BY该怎么写. 1.USER_TEL, 

ORACLE分组函数stddev和variance,我心存的疑问

方差函数VARIANCE(x),具体方法是: 设方差s,a为x1,x2...xn的平均值 ,则s = [(x1-a)^2+(x2-a)^2+(x3-a)^2+--(xn-a)^2]/n 标准差函数STDDEV(x),具体算法是: 方差开方.设标准查为& ,则 &^2 = s 但是我通过以下的实验,发现oracle是这样计算variance()的, s = [(x1-a)^2+(x2-a)^2+(x3-a)^2+--(xn-a)^2]/n-1 ,注意不是除以n,而是n-1 ---------

ORA-01565: error in identifying file &#39;+DATA/ORACLE/spfileORACLE.ora&#39;

操作系统为suse11sp3_x86_64位,数据库为11204. 不小心修改了RAC目录及子目录的权限,资源启动后发现两个节点数据库都未启动,如下: jason1:/u01/app/11.2.0/grid/bin # ./crsctl stat res -t -------------------------------------------------------------------------------- NAME           TARGET  STATE        SE

Oracle基本语法&amp;&amp;函数&amp;&amp;子查询&amp;&amp;分页查询&amp;&amp;排序&amp;&amp;集合操作&amp;&amp;高级分组函数

一.  数据库 手工---文件管理---数据库 DB:Database 数据库. DBMS:管理数据库的软件.(oracle) 主流关系数据库: 1.      Oracle 2.      DB2 3.      SQL Server 基本没人使 4.      MySQL  基本没人用,免费 Linux 开源,可以发现漏洞补上 Windows服务器会有补丁,数据易泄漏 eclipse 日食 数据表(Table): 表的行(Row):记录 表的列(Column):字段 二.  关系型数据库 一

[转]【ROLLUP】Oracle分组函数之ROLLUP魅力

原创:http://blog.itpub.net/519536/viewspace-610995 本文通过演示给出Oracle ROLLUP分组函数的用法,体验一下Oracle在统计查询领域中的函数魅力.ROLLUP分组函数可以理解为Group By分组函数封装后的精简用法,这里同时给出ROLLUP的Group By的改写思路. 1.初始化实验坏境1)创建测试表group_test[email protected]> create table group_test (group_id int,

oracle listener.ora的host不能使localhost,而应该是该机器名,否则不能用ip地址进行连接

# listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora # Generated by Oracle configuration tools. LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) (AD

Win7x64中使用PowerDesigner连接Oralce数据库报“[Oracle][ODBC][Ora]ORA-12154:TNS:无法解析指定的连接标识符”错误解决方法

错误描述 操作系统是Win7 x64,Oracle服务端是Oracle11g x64,客户端是Oracle10gR2 x86. 使用PL-SQL Developer连接正常 使用系统ODBC连接正常.这里要注意的是,64位系统默认启动的是64位ODBC数据源管理器,默认指向的是服务端连接,所以需要为Oracle服务端也配置TNS Service Name,否则同样会连接报错.PowerDesigner默认启动的是32位的ODBC数据源管理器,程序路径为“%SystemRoot%\SysWOW64

oracle init.ora常用配置详解

参考网上整理了重要的配置文件 db_name = "51cto"   一个数据库标识符,应与CREATE DATABASE 语句中指定的名称相对应. instance_name = 51cto在多个例程使用相同服务名的情况下,用来唯一地标识一个数据库例程. INSTANCE_NAME 不应与 SID 混淆,它实际上是对在一台主机上共享内存的各个例程的唯一标识. service_names =  51cto为 Net8 监听程序可用于识别一个服务 (如:复制环境中的一个特定数据库) 的例