作了一间单测试:
SQL> select ORG_ID,ou_id from inv_ou_tb
2 union
3 select '总计',count(1) from inv_ou_tb;select ORG_ID,ou_id from inv_ou_tb
union
select '总计',count(1) from inv_ou_tbORA-01790: 表达式必须具有与对应表达式相同的数据类型本人意图是把两个结果集合并为一个查询集,当然,若前后两结果集数据数目、类型不一一对应,就产生错误,想不到sql server有如此智能查询汇总功能!
SQL> select ORG_ID,ou_id from inv_ou_tb
2 union
3 select '总计',count(1) from inv_ou_tb;select ORG_ID,ou_id from inv_ou_tb
union
select '总计',count(1) from inv_ou_tbORA-01790: 表达式必须具有与对应表达式相同的数据类型本人意图是把两个结果集合并为一个查询集,当然,若前后两结果集数据数目、类型不一一对应,就产生错误,想不到sql server有如此智能查询汇总功能!
解决方案 »
- oracle统计个数的SQL语句编写(急高分)
- 很纠结的查询效果?大侠进来帮忙看看
- oracle中拆分字符串函数
- 关于ORACLE存储中游标调用SQL的一个问题,希望各位能帮忙看看,谢谢
- 请问如何在.net里面调用oracle的函数?是不是跟调用sp一样。我指的函数就是类似用function开头的。而且有返回值的函数怎么调用返回,谢谢
- spool在Linux与Win下的差别
- 把数据从sql server 导到 oracle时出现错误,高手帮着看一下,特急!!
- ADOQuery连接oracle后出现的有关查询的问题
- 在同一用户下面oracle805出现重复表,
- 从存有100000000(100兆)条数据的oracle数据库中检索记录
- 快来救命!
- 问题
查了半天,才知道oracle没有compute by!
SQL> BREAK ON JOB SKIP 1
SQL> COMPUTE SUM LABEL 'TOTAL' OF SAL ON JOB
SQL> SELECT JOB, ENAME, SAL
2 FROM EMP
3 WHERE JOB IN ('CLERK', 'ANALYST', 'SALESMAN')
4 ORDER BY JOB, SAL;
The following output results: JOB ENAME SAL
--------- ---------- ----------
ANALYST SCOTT 3000
FORD 3000
********* ----------
TOTAL 6000CLERK SMITH 800
JAMES 950
ADAMS 1100
MILLER 1300
********* ----------
TOTAL 4150SALESMAN WARD 1250
MARTIN 1250
TURNER 1500
ALLEN 1600
********* ----------
TOTAL 5600不想要分组,去掉第一句,然后第二句on job改为on report
我用你说的试验了一下,可是查询并不显示统计的结果,为什么啊?
create table sa(
id varchar2(10),
name varchar2(20),
score number);
insert into sa values ('01','aa',10);
insert into sa values ('02','bb',10);
insert into sa values ('03','cc',20);然后在SQL*PLUS执行下面的语句
compute sum label 'total' of score on report
select id,name,score
from sa;
结果:
ID NAME SCORE
---------- -------------------- ----------
01 aa 10
02 bb 10
03 cc 20
from talename
group by rollup(id)
但是你的name是字符类型 sql server也处理不了吧
哎,怎么每人回答呢?
SQL> compute count label 'total' of empno on report
SQL> select empno,ename from emp; EMPNO ENAME
---------- ----------
7369 SMITH
7499 ALLEN
7521 WARD
7566 JONES
7654 MARTIN
7698 BLAKE
7782 CLARK
7788 SCOTT
7839 KING
7844 TURNER
7876 ADAMS EMPNO ENAME
---------- ----------
7900 JAMES
7902 FORD
7934 MILLER
----------
14
不过不知道为什么label未显示。
select ID,name from tab1
union
select '总计',count(1)||'人' from tab1;假若id是数字型:
select to_char(ID) id,name from tab1
union
select '总计',count(1)||'人' from tab1;