mysql的行列互转

mysql的行列互转

  • 多行转多列
    • 思路
    • 实现代码
  • 多列转多行
    • 思路
    • 代码

多行转多列

多行转多列,就是数据库中存在的多条具有一定相同值的行数据,通过提取相同值在列头展示来实现行数据转为列数据,一般提取的值为枚举值。

思路

转换前表样式 ->
转换前
转换后表样式 ->
转换后
首先,我们知道month是枚举类型,值是固定的,将行数据转换成列数据的时候,我们可以通过对每行数据进行判断,使用case语句对month值进行选择性执行,并将执行结果作为一个列。这样,只要我们把month的所有值均判断执行,就可以实现行项数据转为列项数据。

实现代码

select id,
sum(case when month='Jan' then revenue end) as Jan_Revenue,
sum(case when month='Feb' then revenue end) as Feb_Revenue,
sum(case when month='Mar' then revenue end) as Mar_Revenue,
sum(case when month='Apr' then revenue end) as Apr_Revenue,
sum(case when month='May' then revenue end) as May_Revenue,
sum(case when month='Jun' then revenue end) as Jun_Revenue,
sum(case when month='Jul' then revenue end) as Jul_Revenue,
sum(case when month='Aug' then revenue end) as Aug_Revenue,
sum(case when month='Sep' then revenue end) as Sep_Revenue,
sum(case when month='Oct' then revenue end) as Oct_Revenue,
sum(case when month='Nov' then revenue end) as Nov_Revenue,
sum(case when month='Dec' then revenue end) as Dec_Revenue
from department
group by id

多列转多行

思路

转换前的样式->
转换前
转换后表样式 ->
转换后

可以看出,表中存在多个列项值。如果要把列项值转为行项值,首先我们可以考虑的方式就是把每个列转为一行数据,这样可以把所有列均转为独立的行项数据,但此时的行项数据是每个数据一条单独行项记录,并不符合我们所需要的要求,所以最后我们还需要把所有的独立行项数据进行连接。

代码

SELECT id,Jan_Revenue,'Jan_Revenue' as month
from department_row
UNION
SELECT id,Feb_Revenue,'Feb_Revenue' as month
from department_row
UNION
SELECT id,Mar_Revenue,'Mar_Revenue' as month
from department_row
UNION
SELECT id,Apr_Revenue,'Apr_Revenue' as month
from department_row
UNION
SELECT id,May_Revenue,'May_Revenue' as month
from department_row
UNION
SELECT id,Jun_Revenue,'Jun_Revenue' as month
from department_row
UNION
SELECT id,Jul_Revenue,'Jul_Revenue' as month
from department_row
UNION
SELECT id,Aug_Revenue,'Aug_Revenue' as month
from department_row
UNION
SELECT id,Sep_Revenue,'Sep_Revenue' as month
from department_row
UNION
SELECT id,Oct_Revenue,'Oct_Revenue' as month
from department_row
UNION
SELECT id,Nov_Revenue,'Nov_Revenue' as month
from department_row
UNION
SELECT id,Dec_Revenue,'Dec_Revenue' as month
from department_row

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/165081.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

(动手学习深度学习)第13章 计算机视觉---微调

文章目录 微调总结 微调代码实现 微调 总结 微调通过使用在大数据上的恶道的预训练好的模型来初始化模型权重来完成提升精度。预训练模型质量很重要微调通常速度更快、精确度更高 微调代码实现 导入相关库 获取数据集 数据增强 定义和初始化模型 微调模型 训练模型

kaggle新赛:SenNet 3D肾脏分割大赛(3D语义分割)

赛题名称:SenNet HOA - Hacking the Human Vasculature in 3D 赛题链接:https://www.kaggle.com/competitions/blood-vessel-segmentation 赛题背景 目前,人类专家标注员需要手动追踪血管结构,这是一个缓慢的过程。即使有专家…

WSA子系统(一)

WSA子系统安装教程 Windows Subsystem for Android (WSA) 是微软推出的一项功能,它允许用户在 Windows 11 上运行 Android 应用程序。通过在 Windows 11 上引入 WSA,用户可以在其 PC 上轻松运行 Android 应用程序,从而扩展了用户的应用程序选…

Java内存结构

1.对象的结构 一个Java对象在内存中包括3个部分:对象头、实例数据和对齐填充 2.虚拟机存储数据的方式 2.1小端存储 : 便于数据之间的类型转换,例如:long类型转换为int类型时,高地址部分的数据可以直接截掉。 2.2大端存储 : 便于数据类型…

德迅云安全告诉您 网站被攻击怎么办-SCDN来帮您

随着互联网的发展给我们带来极大的便利,但是同时也带来一定的安全威胁,网络恶意攻击逐渐增多,很多网站饱受困扰,而其中最为常见的恶意攻击就是cc以及ddos攻击。针对网站攻击,今天为您介绍其中一种防护方式-SCDN&#x…

Zabbix实现故障自愈

一、简介 Zabbix agent 可以运行被动检查和主动检查。 在被动检查模式中 agent 应答数据请求。Zabbix server(或 proxy)询求数据,例如 CPU load,然后 Zabbix agent 返还结果。 主动检查处理过程将相对复杂。Agent 必须首先从 Z…

【算法每日一练]-分块(保姆级教程 篇1)POJ3648

插讲一下分块 题目:(POJ 3648) 一个简单的整数问题 前缀和往往用于静态的不会修改的区间和。遇到经常修改的区间问题,就要用分块或线段树来维护了。 分块算法是优化后的暴力,分块算法有时可以维护一些线段树维护不了的…

Michael Jordan最新报告:去中心化机器学习中的契约、不确定性和激励

‍ ‍导读 11月3日,智源研究院学术顾问委员会委员、机器学习泰斗Michael Jordan在以“新一代人工智能前沿”为主题的2023北京论坛 新工科专题论坛上,发表了题为Contracts, Uncertainty, and Incentives in Decentralized Machine Learning(去…

RHCSA --- Linux存储管理

存储管理 Boot:可引导操作系统的分区(必须是主分区) 分区 ll /dev/nvme0n* 表示的是 nvme接口的磁盘 0n1 1 0n2 2 0n3 3 brw-rw----. 1 root disk 259, 0 Nov 15 19:31 /dev/nvme0n1 磁盘1 brw-rw----. 1 ro…

「Verilog学习笔记」根据状态转移图实现时序电路

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网 这是一个典型的米利型状态机。三段式即可解决。 米利型状态机:即输出不仅和当前状态有关,也和输入有关。 其中ST0,ST1,ST3的…

FastJson竟然会导致内存泄露?你遇到过吗?

FastJson是一款性能优异的java序列化和反序列框架,广泛应用于日常开发工作中,也许正是因为作者在设计这款框架时,比较注重性能方面的考量,在框架安全性,空间占用等方面做了一些牺牲。 很不幸小编前两天就遇到了一个使…

文件重命名最佳实践:如何确保文件名的准确性和一致性

在日常生活和工作中,经常需要处理大量的文件,包括电子文件和纸质文件。文件重命名是为了更好地组织和管理这些文件,以方便查找和使用。然而,重命名文件并不是一件简单的事情,它需要遵循一定的最佳实践以确保文件名的准…

视频封面:从视频中提取封面,轻松制作吸引人的视频

在当今的数字时代,视频已成为人们获取信息、娱乐和交流的重要方式。一个吸引人的视频封面往往能抓住眼球,提高点击率和观看率。今天将介绍如何从视频中提取封面,轻松制作吸引人的视频封面。 一、准备素材选择合适的视频片段 首先&#xff0…

母婴服务预约小程序的效果如何

二胎家庭增速明显,占比较大,成为市场各母婴品牌的目标,而随着行业发展及市场变化,线上互联网深入人们生活,各家母婴品牌开始向“数字化”靠拢。 目前母婴门店商家主要面临服务/产品线上曝光不足、宣传度不够或扩圈无门…

JAVA小游戏 “拼图”

第一步是创建项目 项目名自拟 第二部创建个包名 来规范class 然后是创建类 创建一个代码类 和一个运行类 代码如下: package heima;import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import jav…

EDA实验-----4*4矩阵键盘与数码管显示测试

目录 一、实验目的 二、实验仪器设备 三、实验原理 四、实验要求 五、实验步骤 六、实验报告 七、实验过程 1.矩阵键盘按键原理 2.数码管原理 3.分频器代码 4.电路图连接 5.文件烧录 一、实验目的 了解数码管的工作原理;掌握4*4矩阵键盘和数码管显示的编…

UnitTest框架

目标: 1.掌握UnitTest框架的基本使用方法 2.掌握断言的使用方法 3.掌握如何实现参数化 4.掌握测试报告的生成 1.定义 (1)框架(framework):为解决一类事情的功能集合。(需要按照框架的规定(套路) 去书写代码&…

Virtual安装centos后,xshell连接centos

1. 网络使用Host-Only模式动态分配IP,运行 system restart network 后,使用ifconfig查看新的ip,XShell可以直接连上centos, 但是由于使用的是Host-Only模式,centos不能访问网络,只能与宿主机相互通信 2. 网…

快速支持客户知识库的核心优势是什么?

快速支持客户知识库是一个集中存储和组织企业知识的平台,包含了丰富的信息和解决方案,以帮助客户快速解决问题,帮助企业提高客户支持效率和满意度。那么,快速支持客户知识库的核心优势是什么呢? | 1、提高客户自助支持…

VBA之Word应用:文档(Document)的书签

《VBA之Word应用》(版权10178982),是我推出第八套教程,教程是专门讲解VBA在Word中的应用,围绕“面向对象编程”讲解,首先让大家认识Word中VBA的对象,以及对象的属性、方法,然后通过实…