2011-12-02 38 views
3

我不太清楚我需要問什麼來解決這個問題,即。這是否是子查詢,按組,工會/加盟問題,否則完全的東西...TSQL:根據值將一列分成兩部分

我有一個學生成績表的設置是這樣的:

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

我想要做的是能夠看到按課程彙總的結果,但可以看到性別差異。例如(根據上面的示例表格):

males females class result 
----- ------- ----- ------ 
2  1  Math A+ 
0  1  Math B 

我希望我的問題合理,任何幫助,將不勝感激!

+0

是否有一個原因,爲什麼你非規範化的數據?這通常不是最好的想法(因此,如果你正在尋找一個規範化的結果集,爲什麼這個查詢會非常簡單)。 – 2011-12-02 03:52:22

+0

此查詢的目的是爲了能夠根據結果比較性別。例如。數學中女生比男生獲得更多的A +嗎? – 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