SQL中的case when函数的用法


case函数有两种格式,即简单case函数和case搜索函数

 

简单case函数

语法:

case column

when <condition>  then value

when <condition>  then value

.....

else value end

示例:

case sex

  when '1'  then '男'

  when ‘2’  then '女'

else “其它”  end

 

case搜索函数

语法:

case

when <condition> [, <condition>]  then value

when <condition> [, <condition>]  then value

....

else value end

示例:

case when sex = ‘1’ then ‘男’

    when sex = ‘2’ then “女”

else ‘其它’ end

 

简单case函数重在简洁,但是它只适用于这种单字段的单值比较,

case搜索函数的优点在于适用于所有比较(包括多值比较)的情况,但case搜索函数只返回第一个符合条件的值,剩下的case部分将会自动忽略;

如下面这段SQL是永远无法得到“第二类”的结果:

case when type in (‘a’, 'b')then '第一类'

    when type in (‘a’) then “第二类”

else ‘其他类’  end

 

case的行转列

case用的比较广泛的 功能就是行转列,即将记录行里的数据按条件转换成具体的列

        转换成   

 

 select 姓名,

max(case 课程 when N'语文' then 分数 else 0 end)语文,

 max(case 课程 when N'数学' then 分数 else 0 end)数学,

max(case 课程 when N'物理' then 分数 else 0 end)物理,

from score

group by 姓名

或者使用最新的语法,

select * from score

pivot (max(分数) for 课程 in (语文,数学,物理))

in:行转列的列部分

max:是聚合in里面的内容,也可以是其它聚合函数:sum,min,count等

pivot:固定写法,是case when的一种简略写法

 

case的可以很好的将需要的数据单独显示在一列里面

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM