简单学会SQL中列行转换

今天第一次接触SQL列行转换,自己是利用case when实现。

一:关于case when的语法
case [col_name] when [value1] then [result1] else [default] end
其实类似于C语言中的switch case,先判断case里面的,在于when做判断。说的不是太清楚,后面会有例子来说明

**
二:案例说明
**
图一:原department表(题目来自于leetcode)
简单学会SQL中列行转换_第1张图片
目标:实现图二的需求
在这里插入图片描述
第一步:先按照月份(month)分开,符合条件的设置revenue
select id,
(case month when ‘Jan’ then revenue end) as Jan_Revenue,
(case month when ‘Feb’ then revenue end) as Feb_Revenue,
(case month when ‘Mar’ then revenue end) as Mar_Revenue
from department
注:说直白点就是在month那一列找Jan,有Jan的就返回他对应的revenue值,反之则没有

运行结果如图三:
简单学会SQL中列行转换_第2张图片
**
第二步:按照id汇总,再求sum
select id,
sum (case month when ‘Jan’ then revenue end) as Jan_Revenue,
sum (case month when ‘Feb’ then revenue end) as Feb_Revenue,
sum (case month when ‘Mar’ then revenue end) as Mar_Revenue
from department
group by id

简单学会SQL中列行转换_第3张图片关于case when更详细的用法,可以参考这篇,写的很好!

https://blog.csdn.net/changxiangyangy/article/details/86718551

你可能感兴趣的:(SQL学习,mysql,数据库,sql)