sql - TSQL:根据值将一列分成两列

标签 sql sql-server tsql

我不太确定我需要问什么来解决这个问题,即。这是子查询、分组依据、联合/连接问题,还是其他完全...

我有一个学生成绩表设置如下:

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

我想做的是能够看到按类(class)汇总的结果,但看到性别差异。例如(基于上面的示例表):

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

我希望我的问题有意义,我们将不胜感激!

最佳答案

您需要的查询看起来像这样,使用 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

关于sql - TSQL:根据值将一列分成两列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8351558/

相关文章:

sql查询以获取每个座位数收入最高的餐厅表

java.lang.ArrayIndexOutOfBoundsException 对象数组

mysql - 如何将 UserID 和 ProductID 列作为下载表中的外键?

C# Hash SHA256Managed 不等于 TSQL SHA2_256

sql - 如何在 MERGE 语句中更新源表?

MySQL:仅当存在特定用户 ID 或用户 ID 为空时才获取结果

sql - 使用 postgres 将 Excel 日期格式转换为常规日期

sql - 备份数据库和复制配置?

sql-server - t sql中的相对路径?

sql - 如何在 MSSQL 中声明 VARCHAR 变量