gpt4 book ai didi

mysql - 在 Max 语句之前/期间更改字段的值

转载 作者:行者123 更新时间:2023-11-30 21:58:43 24 4
gpt4 key购买 nike

要查找多个学生注册记录的最高成绩,KG 和 PS 等 alpha 成绩显示为最高,即使 12 年级会“更高”。有没有办法将非数字成绩设置为 00,这样它们就不会显示为最大值(除非学生只注册了非数字成绩)。我尝试了以下,甚至无法编译。编译器不喜欢“当不在时”。提前感谢您提供任何可行的解决方案。如果学生在过去 10 年中从 KG 到 09 就读...我希望将 09 视为最高年级。

DECLARE @grade char(2);
SET @grade='00'

Select
SD.[Student_Number] as [Student_Number],
Max (SE.[Grade_Level]) as [Grade_Level],
CASE SE.[Grade_Level]
when not in ('01','02','03','04','05','06','07',''08',''09','10','11','12')
then @grade
else (SE.[Grade_Level])
End
From
Student_DemographicsCube as SD WITH (NOLOCK),
Student_EnrollmentCube as SE WITH (NOLOCK)
Where
SD.[Student_ID] = SE.[Student_ID]
Group By
SD.[Student_Number]
Order By
SD.[Student_Number]

最佳答案

您的查询有几个问题。首先,您应该使用明确的 JOIN 语法。二、CASE表达式和 Max()语法格式不正确。尝试使用:

Select
SD.[Student_Number] as [Student_Number],
Max(CASE when SE.[Grade_Level] not in ('01','02','03','04','05','06','07','08','09','10','11','12')
then @grade
else SE.[Grade_Level]
End) as [Grade_Level]
From Student_DemographicsCube as SD WITH (NOLOCK)
Inner Join Student_EnrollmentCube as SE WITH (NOLOCK)
ON SD.[Student_ID] = SE.[Student_ID]
Group By SD.[Student_Number]
Order By SD.[Student_Number];

你会注意到我移动了 WHERE SD.[Student_ID] = SE.[Student_ID]INNER JOIN明确表示您正在加入表格。然后是 CASE 的语法表达式是 CASE WHEN <some condition> THEN <something> ELSE <something else> END它被放置在 MAX() 中聚合函数。这应该可以解决您遇到的语法问题。

关于mysql - 在 Max 语句之前/期间更改字段的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44186375/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com