2 qjj2012 qjj2012 于 2016.03.31 18:48 提问

oracle distinct、group by、union all叠加使用报错

分组聚合条件下,计算xjh不重复的记录条数以及所有记录条数:
with a as(
select '2012' xn,'a'xxdm,'x1' xjh from dual
union all
select '2012' xn,'a'xxdm,'x1' xjh from dual
union all
select '2012' xn,'a'xxdm,'x2' xjh from dual
union all
select '2012' xn,'a'xxdm,'x3' xjh from dual
)
select xn,xxdm,count(distinct xjh)rs
from a
group by xn,xxdm
union all
select xn,xxdm,count( xjh)rs
from a
group by xn,xxdm

在oracle 中执行报错:ora-03113 :通信通道的文件结尾
但删除union all 之后的语句,可正常显示,或删除count()中的distinct 也可执行

求大神指教。
图片说明

2个回答

caozhy
caozhy   Ds   Rxr 2016.04.01 07:11
CSDNXIAOC
CSDNXIAOC   2016.03.31 18:52

基础知识

一、子查询

select * from kb_qyb where qybh in ('000000000830359','000000000572791')
select * from kb_qyb where qybh in (select qybh from kb_ssmx)
select * from kb_qyb where qybh not in (s......
答案就在这里:SQL Server 学习(1)子查询(in,not in)、多表查询、合并表(union、union all)、分组(group by)、分组的条件(having)、虚拟表、标量值函数、外键
----------------------你好,人类,我是来自CSDN星球的问答机器人小C,以上是依据我对问题的理解给出的答案,如果解决了你的问题,望采纳。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Union 和 Union all + distinct 性能比较
测试数据量查询结果数据量是1百多万  测试环境oracle11g 单实例环境  结论:在大数据量的情况下distinct + union all  性能大于 UNION 的性能 1.distinct + union all 场景  ---数据量1074177--  ----用时2.158秒----  SELECT COUNT(*) FROM (  SELECT DISTINCT
SQL Union和SQL Union All两者用法区别效率以及与order by 和 group by配合问题
SQL Union和SQL Union All用法 SQL UNION 操作符 UNION 操作符用于合并两个或多个 SELECT 语句的结果集。 请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。 SQL UNION 语法 SELECT column_name(s) FR
union union all group by 优化一例
一. 原执行计划本SQL是公司显示屏报表SQL,每2min更新一次 SQL> explain plan for select distinct id_card from (select t.id_card from clspuser.crf_p2p_account_info t where t.loan_amount <= 200000
Oracle中对Clob字段进行Distinct
oracle 10+g不支持对类型为CLOB的列进行distinct,也不支持union,所以在遇到此问题,需要对SQL语句进行重新,从另一思想去实现同样的效果的。union没仔细思考过,具体还要看union里面的条件如何,最简单的方法是利用to_char将clob字段转换成char型,但存在一个问题,如clob中的字符长度超过4000时会报错。
【SQL】两个带order by查询进行union all报ORA-00933错误的解决方法
在oracle SQL中,要求order by是select语句的最后一个语句,而且一个select语句中只允许出现一个order by语句,而且order by必须位于整个select语句的最后。 当时是要将一个十分复杂的检索明细查询和一个十分复杂的检索汇总查询的结果进行合并,以简化开发。 开发人员选择使用了union all来连接两个结果集。 ※使用union all 而不用un
在查询结果后的最后一行加上合计,不用 union all,使用GROUP BY ROLLUP grouping
1  原始数据为这样: 里面的数据,大家可以造几条,反正主要是在最后一行能展示出来合计来,不用union  all  ,我们这里用GROUP BY ROLLUP 和 grouping来写这个查询语句 2  我们先给它加上一个  row_number() over (order by 1) AS rowno  最为一个唯一值 3 然后再 用group by  ro
Oracle union all和order by一起使用
//有时候,我们会将进过排序(order by)后的结果集与      //其他经过排序的结果集进行合并(union or union all)      //比如:      select * from tb where length(id)=5 order by id desc     union all      select * from tb where length(id
union all和order by一起使用出问题
select * from (select * from (select zxbz,count(*)rs from dc_jhmy where 1=1 group by zxbz  order by rs desc    union all       select hj as zxbz,count(*)rs from dc_jhmy where 1=1)where rownum SQL语
mysql组合表表达式union,union distinct,union all详解
1 union简介     UNION属于集合运算符(set operator)允许我们把多个表表达式组合到一个复合表表达式中,它把一个表表达式的结果放在另一个表表达式的下面,在mysql数据库中提供了UNION和UNION ALL关键字,列于每个SELECT语句的对应位置的被选择的列应具有相同的类型。在第一个SELECT语句中被使用的列名称也被用于结果的列名称。     如果UNION不使用
oracle中union脚本报“缺少右括号”问题
由于不同的客户他们要求的数据库服务器不一样,有的要求是sqlserver,而有的要求是oracle。所以本周的任务就是把整个项目移植到oracle。本人一直在用sqlserver 2005,而oracle基本是从零开始学,虽然以前上了几节课,可后来也没怎么用,所以基本全换给老师了。废话少说,就当作一次学习的机会吧:sqlserver 2005脚本语句:  select distinct