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 也可执行

求大神指教。
图片说明

基础知识

一、子查询

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,以上是依据我对问题的理解给出的答案,如果解决了你的问题,望采纳。

http://blog.csdn.net/zwk626542417/article/details/39667999