作了一间单测试:
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有如此智能查询汇总功能!

解决方案 »

  1.   

    非常感谢楼上的兄弟能不计较分数,来一起探讨问题。
    查了半天,才知道oracle没有compute by!
      

  2.   

    sqlplus命令中不仅可以统计,而且可以分组统计。给一个例子:
    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
      

  3.   

    to :snowy_howe(天下有雪)
       我用你说的试验了一下,可是查询并不显示统计的结果,为什么啊?
    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
      

  4.   

    select id,sum(name)
    from talename
    group by rollup(id)
    但是你的name是字符类型 sql server也处理不了吧
      

  5.   

    可以统计count(*)啊,其实就是要统计这个数据。
    哎,怎么每人回答呢?
      

  6.   

    SQL> break on report skip 1
    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未显示。
      

  7.   

    假若id是字符型:
    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;