sql - 如何使用 GROUP BY 为不同列获取多个 SUM()

标签 sql sql-server tsql group-by sum

这就是我所拥有的:

SELECT     
    SUBJECT_ID, SUM(SOMETABLE.COLUMN) AS HOURS, POINTS, SEMESTER_ID
FROM       
    SOME_TABLES
WHERE     
    (GROUP = (SELECT TOP (1) GROUP
              FROM SOMETABLE2
              WHERE (STUDENT_ID = 123)))
GROUP BY 
    SUBJECT_ID, POINTS, SEMESTER_ID
HAVING      
    (SUBJECT_ID = 782)

此查询返回:

enter image description here

我需要得到这个结果:

enter image description here

为了获得结果,我使用以下查询:

SELECT     
    SUBJECT_ID, SUM(SOMETABLE.COLUMN) AS HOURS,  
    SUM(SOMETABLE3.COLUMN) AS POINTS, SEMESTER_ID
FROM
    SOME_TABLES
WHERE     
    (GROUP = (SELECT TOP (1) GROUP
              FROM SOMETABLE2
              WHERE (STUDENT_ID = 123)))
GROUP BY 
    SUBJECT_ID, SEMESTER_ID
HAVING      
    (SUBJECT_ID = 12)

但它返回 SUM 而不包含 GROUP BY 语句 - 就像第二个屏幕截图一样,但有两次 16 分,而每学期应该有两行 8 分.

如何获得 SEMESTER_ID 的正确积分?有带有示例数据的脚本 在这篇文章下的评论中。

最佳答案

试试这个:

SELECT
     SUBJECT_ID,SEMESTER)ID
    ,SUM(HOURS) as HOURS
    ,SUM(POINTS) as POINTS
FROM SOME_TABLES
WHERE SUBJECT_ID = 12
GROUP BY
     SUBJECT_ID,SEMESTER)ID

关于sql - 如何使用 GROUP BY 为不同列获取多个 SUM(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33479673/

相关文章:

sql-server - "create if not exist"和 "create table like"sql server 查询

sql - T-SQL : How to join @variable tables (another try)

tsql - t-sql 结果存入文件

mysql - 选择所有 ORDER BY View 并使每 3 个项目随机

mysql - 结果中 2 列的聚合

sql-server - 迁移到 TeamCity 中的 SQL Server : A driver for the source database not found

tsql - SQL Reporting Services,过滤不在 DISTINCT SELECT 语句中的字段?

sql - 如何通过多个连接加速 MySQL 查询

SQL Server 表与索引的同义词

sql-server - 定义 View 时如何让 T-SQL 执行 OPTION (FORCE ORDER)?