0

我脑子里放了个屁,我似乎无法摆脱它。我以前做过,但我不记得我是怎么做到的。这是要点:我有一个我创建的表(测试),在这个表中我存储了一些随机信息。(这是一个测试表,所以表中的信息不适用于任何东西)。我的测试表如下所示:

Name     varchar2 Primary key
age      varchar2
sex      char 
social   varchar2  Primary Key

我以这张表为例,这就是我有两个主键的原因。我在向一个学生展示如何做一个复合键。

我的问题是:如何创建一个在行尾有总计数的查询?

我正在寻找这样的东西:

Name   Male  Female
xxxxx   m
xxxxx   m
xxxxx   m
xxxxx   m
xxxxx          F
xxxxx          F
Total:  4      2

我创建了以下查询(不太有效)作为测试。

set feedback on    
compute sum(COUNT(SEX)) LABEL "# of males" of sex_count on report 
select count(sex) as sex_count
from test
where sex = upper('m')
4

2 回答 2

2

这会解决你的问题吗?

select name, male, female from (
    select name, 
           decode( sex, 'm', 'm', null) Male, 
           decode( sex, 'f', 'f', null) Female, 0 n 
      from test
     union
    select 'Total', 
           to_char(sum(decode(sex, 'm', 1, 0))), 
           to_char(sum(decode(sex, 'f', 1, 0))), 
           1 
      from test
     group by 'Total' 
  ) order by n

链接到小提琴: http ://sqlfiddle.com/#!4/0e501/3/0

于 2013-10-24T15:03:01.610 回答
0

根据“compute...on report”语句,看起来您正在使用 SQL*Plus。尝试这个:

compute count label total of male female on report
break on report

 select name, decode(sex, 'm', sex) male, decode(sex, 'f', sex) female
  from test
 order by name;
于 2013-10-25T16:01:17.290 回答