2011-12-02 4 views
3

이 문제를 해결하기 위해 무엇이 필요한지 잘 모르겠습니다.TSQL : 하나의 열을 두 개의 값으로 나누십시오.

student gender class result 
------- ------ ----- ------ 
Bob  M  Math A+ 
Mary F  Math A+ 
Peter M  Math A+ 
Jane F  Math B 

내가하고 싶은 것은이 될 것입니다 :이 하위 쿼리에 의해 그룹, 노동 조합인지 여부를/질문, 또는 완전히 다른 뭔가 ... 나는이 같은 학생 결과 테이블 설정 뭔가를

가입 학급별로 집계 된 결과를 볼 수는 있지만 성별 차이를 볼 수 있습니다. 예 : 위의 예제 테이블을 기반으로 :

나는 내 질문에 도움이되고 도움이 되었으면합니다.

+0

이유가 거기에 왜 비정규되는 데이터를 사용하고 계십니까? 이것은 대개 가장 좋은 아이디어는 아닙니다 (따라서 정규화 된 결과 집합을 찾는 경우이 쿼리가 매우 간단 해지는 이유). –

+0

이 쿼리의 목적은 결과에 따라 성별을 비교할 수있게하는 것입니다. 예 : 소녀들은 수학에서 남학생보다 A + s를 더 많이 받습니까? – Paul

답변

7

이 같을 것이다 필요 쿼리, SUM() 집계 및 GROUP BY

SELECT SUM(CASE 
       WHEN Gender = 'M' THEN 1 
       ELSE 0 
      END) AS Males 
    , SUM(CASE 
      WHEN Gender = 'F' THEN 1 
      ELSE 0 
     END) AS Females 
    , class 
    , result 
FROM student 
GROUP BY class, result 
+0

아담 당신은 전설입니다! 이것은 훌륭하게 작동합니다! 고맙습니다! – Paul

0
SELECT CLASS, 
RESULT, 
SUM(CASE WHEN GENDER ='M' THEN 1 ELSE 0 END) MALE , 
SUM(CASE WHEN GENDER ='F' THEN 1 ELSE 0 END) FEMALE 
FROM TABLE_1 
GROUP BY CLASS,RESULT 
관련 문제