SQL基础-05-行转列

本文介绍了如何在MySQL中将行数据转换为列数据,以计算每个name每个月的收入总和。提供了两种方法:方法1通过JOIN操作逐月合并,适合月份较少的情况;方法2直接在SQL查询中进行条件求和,简洁高效,适用于多种情况。
摘要由CSDN通过智能技术生成

环境:MySQL 5.7.29

0、问题描述

现在有如下图所示的表 income_record :

00-原始数据.png

需要按照 name,month_id 对 amount 进行求和,计算出每个 name 每个 month_id 对应的收入之和,并且将每个月的收入之和作为一列,需要生成的目标表如下:

00-目标表.PNG

有如下两种方式可以实现:

方法1

方法1首先分别对每月的数据进行求和,然后在用 JOIN 方法拼接各个月的数据,得到最终结果。当月份很多时,这种方法较为繁琐。具体代码如下:

SELECT t1.name,
	   t1.amount_m1,
	   t2.amount_m2
  FROM
  
(
SELECT name,
	   SUM(amount) AS amount_m1

  FROM income_record
 WHERE month_id = '2021-01'
 GROUP BY name
) t1

  LEFT JOIN

(
SELECT name,
	   SUM(amount) AS amount_m2

  FROM income_record
 WHERE month_id = '2021-02'
 GROUP BY name
) t2

    ON t1.name = t2.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值