求详解SQL的CASE函数语句含义

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求详解SQL的CASE函数语句含义相关的知识,希望对你有一定的参考价值。

我明白下列两语句之不同,但不能理解.初学SQL2005 请教!

select 课程,
sum(case when 姓名='李四' then 成绩 end)as '李四',
sum(case when 姓名='张三' then 成绩 end)as '张三'
from table_2
group by 课程

select 姓名,
sum(case when 课程='语文' then 成绩 end)as '语文',
sum(case when 课程='数学' then 成绩 end)as '数学',
sum(case when 课程='英语' then 成绩 end)as '英语'
from table_2
group by 姓名

table_2是表名 姓名,课程,成绩是列名。)其他是对应列的数据

希望可以帮我找到更多的知识。
想了解清楚每个词的意思,和这句语句的步骤,如先把什么抽出来,再怎么怎么,···那样···

select 课程,
sum(case when 姓名='李四' then 成绩 end)as '李四',
sum(case when 姓名='张三' then 成绩 end)as '张三'
from table_2
group by 课程

--意思是:
查询结果按照“课程”、“李四的成绩”、“张三的成绩”显示出来,
其中“李四的成绩”计算方法是:
当姓名=李四,那么就计算将该行的成绩按照课程进行分类加总
“张三的成绩”计算方法是:
当姓名=张三,那么就计算将该行的成绩按照课程进行分类加总

select 姓名,
sum(case when 课程='语文' then 成绩 end)as '语文',
sum(case when 课程='数学' then 成绩 end)as '数学',
sum(case when 课程='英语' then 成绩 end)as '英语'
from table_2
group by 姓名

--类似的意思是:
查询结果按照“姓名”、“语文”、“数学”、“英语”按照姓名进行加总各科成绩显示出来,
其中“语文”成绩计算方法是:
当科目=语文,那么就计算将该行的成绩按照姓名进行分类加总
“数学”成绩计算方法是:
当科目=数学,那么就计算将该行的成绩按照姓名进行分类加总
“英语”成绩计算方法是:
当科目=英语,那么就计算将该行的成绩按照姓名进行分类加总

case when 条件 then 表达式1 else 表达式2 end
表示:当条件成立,则返回表达式1,否则返回表达式2.
因此:sum(case when 姓名='李四' then 成绩 end)as '李四', 表示如果姓名为李四,则加总计算成绩,列名为‘李四’

类似的楼主可以自己理解了。
参考技术A case的意思.就相等的程序中的if 也就是如果

case when 课程='语文' then 成绩 end

翻译就是..如果课程列的记录等于语文,那么就取此行成绩列的值.

本来是取课程的值..
参考技术B case的意思.就相等的程序中的if 也就是如果

case when 课程='语文' then 成绩 end

翻译就是..如果课程列的记录等于语文,那么就取此行成绩列的值.

本来是取课程的值..

支持这个答案!
参考技术C 是想把本来的数据横排吧?
这句
sum(case when 姓名='李四' then 成绩 end)as '李四',
是统计表中,李四的总成绩,以李四为字段名显示出来, 张三同理

sum(case when 课程='语文' then 成绩 end)as '语文',
同上啦,通过这样做法,将语文,数学,英语记总成绩横排出来,
参考技术D 1

SQL语句中case,when,then的用法

用法如下:

复制代码

SELECT

s.s_id,

s.s_name,

s.s_sex,

CASE

WHENs.s_sex='1'THEN'男'

WHENs.s_sex='2'THEN'女'

ELSE'其他'

ENDassex,

s.s_age,

s.class_id

FROM

t_b_students

WHERE

1=1

这两个结果是一样的:

需要注意的一点是,Case函数只返回第一个限定值,其余的Case将被自动忽略。

扩展资料:

Case有两种格式:简单函数和Case搜索函数。

简单的例子功能:

CASEsex

WHEN‘1’THEN‘男’

WHEN‘0’THEN‘女’

ELSE‘其他’END

Case搜索函数:

CASEWHENsex=‘1’THEN‘男’

WHENsex=‘0’THEN‘女’

ELSE‘其他’END

显然简单的Case函数天生简洁,但它们只适用于这种单字段单值比较,而Case搜索函数具有适用于所有比较用例的优势。

另一个需要注意的问题是,在Case函数满足了某个条件之后,其余的条件将被自动忽略,这样即使满足了多个条件,在执行过程中也只能识别第一个条件。

当使用CASEWHEN时,您可以将其视为没有字段名的字段,字段值是有条件的,并且在需要使用字段名时可以使用as来定义别名。

参考技术A select case when 字段名 is null then '录入' else 字段名 end as 别名 from 表名 where 条件

别名要不要都行。 语法没多少用的!要有一个整段sql例子!你就懂了
参考技术B case 表达式
when 值1 then 结果1
when 值2 then 结果2
else 结果3
也有另一种形式
case
when 表达式1 then 结果1
when 表达式2 then 结果2
else 结果3

以上是关于求详解SQL的CASE函数语句含义的主要内容,如果未能解决你的问题,请参考以下文章

条件判断函数-CASE WHEN、IF、IFNULL详解

case when用法sql

SQL语句中case,when,then的用法

求C语言各关键字的含义。急!!!

SQL语句中case,when,then的用法

在PL/SQL中 使用 case when 语句求两个条件合并统计的平均值