2013-10-24 2 views
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') 

답변

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 

링크 : 당신은 SQL * Plus를 사용하는 것처럼 http://sqlfiddle.com/#!4/0e501/3/0

+0

하지만, 위의 계산 기능을 사용하여 기억할 수 있습니다. 나는 단지 그것이해야하는 것보다 더 열심히 만들고있는 것처럼 느낀다. – nmaybyte

0

에 기초 "계산 ... 보고서"문, 그것은 보인다. 이것을 시도하십시오 :

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;