繁体   English   中英

SQL select 子句中的服务器案例语句

[英]SQL Server case statement in select clause

我有一个查询,它给了我 StudentId 和 PercentageScored 在学生参加的考试中,一个学生可以参加多个考试

StudentId | PercentageScored
    101         82
    102         57
    101         69
    103         71
    103         42

下面是一个示例查询,我的实际查询类似于下面。

Select s.StudentId, m.[PercentageScored]
FROM dbo.[Student] S
Inner join dbo.[Marks] m
ON S.[StudentId] = m.[StudentId]
WHERE S.[StudentGroup] = 12 AND S.[Active] = 1 

现在我需要添加一些逻辑,以便我的 output 如下所示

StudentId  | FirstClass | SecondClass | ThirdClass
   101
   102
   103
   104

If the students PercentageScored is above 80% then 1st class, PercentageScored between 60 to 80 % then 2nd class,PercentageScored below 60% then 3rd class.. I need to give the counts, for a given student how many times he scored more than 80 %,60-80%之间多少次,60%以下多少次

使用条件聚合:

SELECT
    s.StudentId,
    COUNT(CASE WHEN m.[PercentageScored] > 80 THEN 1 END) AS FirstClass,
    COUNT(CASE WHEN m.[PercentageScored] > 60 AND
                    m.[PercentageScored] <= 80 THEN 1 END) AS SecondClass,
    COUNT(CASE WHEN m.[PercentageScored] <= 60 THEN 1 END) AS ThirdClass
FROM dbo.[Student] s
INNER JOIN dbo.[Marks] m
    ON s.[StudentId] = m.[StudentId]
WHERE
    s.[StudentGroup] = 12 AND s.[Active] = 1
GROUP BY
    s.StudentId;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM