sql语句里面的case when 和choose when的使用区别
这本是一个简单的知识,但在使用时还会模糊,特地记录:
case when主要用于查询出的字段上,进行结果区分;
例如:
select sex,
(CASE
WHEN sex = '1' THEN '男'
WHEN sex = '2' THEN '女'
ELSE '其他' END) as sexname
from sys_student
或者
select sex,
(CASE sex
WHEN '1' THEN '男'
WHEN '2' THEN '女'
ELSE '其他' END) as sexname
from sys_student
而choose when用于查询条件的判断,类似if ……else if
SELECT * FROM TNotific
<where>
<choose>
<when test="method != null">
and Method = #{method,jdbcType=VARCHAR}
</when>
<when test="statusOfread != null">
and StatusOfread = #{statusOfread,jdbcType=VARCHAR}
</when>
<otherwise>
and BizCaseId = #{bizCaseId,jdbcType=VARCHAR}
</otherwise>
</choose>
</where>
或者
select * from sys_student
where 1 = 1
<choose>
<when test="status == 0">
and (status = 0 or status is null or status ='')
</when>
<when test="status == 1">
and status =1
</when>
<otherwise>
and status = 2
</otherwise>
</choose>
这里可以不要otherwise,都用when
实例:
使用case when 实现列转行:
这是表中数据,要转成的效果是:
直接上代码:(典型的列转行)
SELECT
name,
SUM(CASE SUBJECT WHEN '语文' THEN score end) as '语文',
SUM(CASE SUBJECT WHEN '数学' THEN score end) as '数学',
SUM(CASE SUBJECT WHEN '英语' THEN score end) as '英语'
FROM student_grade
GROUP BY name
版权声明:本文为m0_37635053原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。