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的可以很好的将需要的数据单独显示在一列里面

 

posted @   哩子吖  阅读(4876)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示