SQL的case when then else end语句的用法(3)

六,在案例函数中使用合计函数 

假设有下面一个表

学号(std_id)课程ID(类标识码)课程名(CLASS_NAME)主修标志(main_class_flg)
1001经济学ÿ
1002历史学ñ
2002历史学ñ
2003考古学ÿ
2004计算机ñ
3004计算机ñ
400化学ñ
5006数学ñ

有的学生选择了同时修几门课程(100,200)也有的学生只选择了一门课程(300,400,500)。选修多门课程的学生,要选择一门课程作为主修,主修里面写入Y.只选择一门课程的学生,主修标志为N(实际上要是写入Ý的话,就没有下面的麻烦事了,为了举例子,还请多多包含)。 
现在我们要按照下面两个条件对这个表进行查询

  1. 只选修一门课程的人,返回那门课程的ID
  2. 选修多门课程的人,返回所选的主课程ID 
条件1
select s_id,
case  when count(1)=1  then max(c_id)  else 
max( case when flag = 'Y'  then c_id else null end) 
end  as c_id 
from  study group  by s_id;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值