小编Mar*_*Sz.的帖子

如何使用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)
Run Code Online (Sandbox Code Playgroud)

此查询返回:

在此输入图像描述

我需要得到这个结果:

在此输入图像描述

为了得到这个结果我正在使用这个查询:

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)
Run Code Online (Sandbox Code Playgroud)

但它返回时SUM没有包含GROUP BY声明 - 就像第二次截图一样,但有两次有16点,而每学期应该有两行8点.

如何获得SEMESTER_ID的正确点?在这篇文章中有评论样本数据的脚本.

sql t-sql sql-server group-by sum

5
推荐指数
1
解决办法
132
查看次数

标签 统计

group-by ×1

sql ×1

sql-server ×1

sum ×1

t-sql ×1