我有一个包含表 Student(StudId, StudName,...) 和 Grades (GradeExam1, GradeExam2,..) 等的数据库。我想做一个查询来为每个年级分配一个字母等级。我正在考虑做类似的事情:
SELECT StudId, GradeExam1 AS 'A' IF GradeExam1>= 90 AND GradeExam1 <=100
UNION
SELECT StudID, GradeExam1 AS 'B' ..........
Run Code Online (Sandbox Code Playgroud)
我知道我可以在普通 SQL 中使用非条件别名,但我从未在 SQL 查询中使用过条件别名。
或者我可能需要 T-SQL 来为给定的考试做一个循环,而不是为不同的条件做一个 select 语句的联合?
提前致谢。
Sco*_*red 10
你在谈论一个CASE表达式:
DECLARE @Table table (StudentId INT, GradeExam1 int, GradeExam2 int);
insert into @Table (StudentId,GradeExam1,GradeExam2) values (1,95,88);
insert into @Table (StudentId,GradeExam1,GradeExam2) values (2,85,93);
insert into @Table (StudentId,GradeExam1,GradeExam2) values (3,75,87);
SELECT StudentId
,CASE
WHEN GradeExam1 >= 90
AND GradeExam1 <= 100
THEN 'A'
WHEN GradeExam1 >= 80
AND GradeExam1 <= 90
THEN 'B'
WHEN GradeExam1 >= 70
AND GradeExam1 <= 80
THEN 'C'
END AS GradeExam1
,CASE
WHEN GradeExam2 >= 90
AND GradeExam2 <= 100
THEN 'A'
WHEN GradeExam2 >= 80
AND GradeExam2 <= 90
THEN 'B'
WHEN GradeExam2 >= 70
AND GradeExam2 <= 80
THEN 'C'
END AS GradeExam2
FROM @table;
Run Code Online (Sandbox Code Playgroud)
我的CASE表达式示例是标准 SQL,而不仅仅针对T-SQL语法。
如果您想了解有关 CASE 表达式实现的更多信息,请查看此处。