SQL> select decode(grouping(deptno),1,'TOTAL',0,deptno) example,sum(sal)
from emp
group by rollup(deptno);
example SUM(SAL)
---------------------------------------- ----------
10 8750
20 10875
30 9400
TOTAL 29025
SQL> select decode(grouping(deptno),0,deptno,1,'TOTAL'), sum(sal)
from emp
group by rollup(deptno);
ERROR:
ORA-01722:无效号码
情形3:
select (case grouping(deptno) when 1 then 'all' when 0 then deptno end) example,sum(sal) from emp group by rollup(deptno)
错误:预期的字符数
我正在尝试上述内容,期望相同的输出,但它显示差异。
答案 0 :(得分:0)
Oracle会自动将返回值转换为与第一个结果相同的数据类型。
在第一个查询中,第一个结果是TOTAL
,一个字符串类型,因此列类型是一个字符串,deptno
可以毫无问题地转换为deptno
。
在第二个查询中,第一个结果是TOTAL
,一个数字类型,因此coumn类型是数字。由于第二个结果ORA-01722: invalid number
无法转换为数字类型,因此查询将失败并显示{{1}}。