简单学会SQL中列行转换

本文介绍了如何使用SQL中的case when语句进行列行转换,通过一个具体的例子展示了将department表中的数据按月份分组并计算各月营收的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

**
二:案例说明
**
图一:原department表(题目来自于leetcode)
在这里插入图片描述
目标:实现图二的需求
在这里插入图片描述
第一步:先按照月份(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值,反之则没有

运行结果如图三:
在这里插入图片描述
**
第二步:按照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

在这里插入图片描述关于case when更详细的用法,可以参考这篇,写的很好!

https://blog.youkuaiyun.com/changxiangyangy/article/details/86718551

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值