select中case when的使用

select中case when的使用

select case结合使用最大的好处有两点,一是在显示查询结果时可以灵活的组织格式,二是有效避免了多次对同一个表或几个表的访问。

1:表 students(id, name ,birthday, sex, grade),要求按每个年级统计男生和女生的数量各是多少,统计结果的表头为,年级,男生数量,女生数量。如果不用select case when,为了将男女数量并列显示,统计起来非常麻烦,先确定年级信息,再根据年级取男生数和女生数,而且很容易出错。用select case when写法如下:
SELECT   grade, COUNT (CASE WHEN sex = 1 THEN 1      /*sex 1
为男生,2位女生*/
                                            ELSE NULL
                                            END)
男生数,
                            COUNT (CASE WHEN sex = 2 THEN 1
                                            ELSE NULL
                                            END)
女生数
    FROM students GROUP BY grade

例2:pat_visit.admission_date_time的日期格式为YYYY-MM-DD HH24:MI,求患者的年龄。

create orreplaceview yw_viewas

(

 select

case

when trunc(a.admission_date_time-b.date_of_birth)<30 and floor(a.admission_date_time-b.date_of_birth)>=1 then

  round(a.admission_date_time-b.date_of_birth)||'天'

  whenround(a.admission_date_time-b.date_of_birth)>30 andround(a.admission_date_time-b.date_of_birth)<365 then

  round((a.admission_date_time-b.date_of_birth)/30)||'月'

 whenfloor(a.admission_date_time-b.date_of_birth)>'365'then

  round((a.admission_date_time-b.date_of_birth)/365)||'岁'

  whenceil(a.admission_date_time-b.date_of_birth)<='1'then

  round((a.admission_date_time-b.date_of_birth)*24*60)||'分钟'

  end

  as年龄,a.patient_id

from pat_visit a,pat_master_index bwhere a.patient_id=b.patient_id);

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值