select stu_id,case when count(*) = 1 then class_id
else max(case when main_class_flag = 'Y' then class_id else NULL END) END as classid
from courses group by stu_id;
不知道为啥要加这个max
select stu_id,
(case when count() = 1 then class_id
else max(case when main_class_flag = 'Y' then class_id else NULL END) END as classid
from courses
group by stu_id;
这个题目的意思 count()=1,就直接输出class_id(班级id),否则就取class_id最大那个
博主不知道你要表达什么 ,单单 看聚合函数里的cas when ,我能看出啥?