TSQL: разделить один столбец на два в зависимости от значения - PullRequest
3 голосов
/ 02 декабря 2011

Я не совсем уверен, что мне нужно просить, чтобы решить эту проблему, т.е. будь то подзапрос, группировка, вопрос объединения / объединения или что-то еще полностью ...

У меня есть таблица результатов ученика, которая выглядит примерно так:

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

Надеюсь, мой вопрос имеет смысл, и любая помощь будет признательна!

Ответы [ 2 ]

7 голосов
/ 02 декабря 2011

Запрос, который вам нужен, будет выглядеть следующим образом, с использованием 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 голосов
/ 02 декабря 2011
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...