读童话的狼

2020-02-15   阅读量: 911

数据分析师 Mysql

怎么使用case...when...进行纵横表转换?

扫码加入数据分析学习群

查询语句中 case…when 的使用
case when 语句,用于计算条件列表并返回多个可能结果表达式之一。
通常用于将枚举值转换为通俗易懂的字符串,也可嵌套在聚合函数里。
例子
将 fruits 表中,查询出供应商和其对应提供的水果,且供应商查询结果需要做以下改变:
供应商 101 改为老李,102、103、104 改为老陈,105、106、107 改为老唐。

在这里插入图片描述


select case when s_id=101 then '老李' when s_id in (102,103,104) then '老陈' else '老唐' end as 供应商, f_name as '水果名字' from fruits;

在这里插入图片描述


纵表转横表
如何将

在这里插入图片描述

转成

在这里插入图片描述


select name as '姓名', sum(case course when '语文' then score else 0 end) as '语文', sum(case course when '数学' then score else 0 end) as '数学', sum(case course when '物理' then score else 0 end) as '物理' from couses_table group by name;
为什么要这样写呢?
且看分解:
select name as '姓名' from couses_table;

在这里插入图片描述


select name as '姓名', (case course when '语文' then score else 0 end) as '语文' from couses_table;

在这里插入图片描述


select name as '姓名', sum(case course when '语文' then score else 0 end) as '语文' from couses_table group by name;

在这里插入图片描述


如此类推,添加上数学和英语两列也是如此。


0.0000 0 2 关注作者 收藏

评论(0)


暂无数据

推荐课程