在 SQL 中,行转列是指将数据表中具有相同 key 值的多行 value 数据,转换为使用一个 key 值的多列数据,使每一行数据中,一个 key 对应多个 value。行转列完成后,在视觉上的效果就是:表中的总行数减少了,但是列数增加了。
行转列可以使用以下方法实现:
CASE WHEN 语句
使用 CASE WHEN 语句可以将数据表中具有相同 key 值的多行 value 数据转换为使用一个 key 值的多列数据。具体做法如下:
SELECT
key,
CASE
WHEN key = '语文' THEN value1
WHEN key = '数学' THEN value2
WHEN key = '英语' THEN value3
END AS value
FROM
table;
这段 SQL 语句将将 table 表中具有相同 key 值的多行 value 数据转换为使用一个 key 值的多列数据,key 列为 key,value 列为 value1、value2、value3。
PIVOT 运算符
PIVOT 运算符可以将数据表中具有相同 key 值的多行 value 数据转换为使用一个 key 值的多列数据。具体做法如下:
SELECT
key,
value
FROM
table
PIVOT(
SUM(value)
FOR key IN ('语文', '数学', '英语')
);
这段 SQL 语句将将 table 表中具有相同 key 值的多行 value 数据转换为使用一个 key 值的多列数据,key 列为 key,value 列为 value1、value2、value3。
GROUP BY 和 GROUP_CONCAT 函数
GROUP BY 和 GROUP_CONCAT 函数也可以实现行转列。具体做法如下:
SELECT
key,
GROUP_CONCAT(value) AS value
FROM
table
GROUP BY
key;
这段 SQL 语句将将 table 表中具有相同 key 值的多行 value 数据转换为使用一个 key 值的多列数据,key 列为 key,value 列为 value1、value2、value3。
在实际开发中,可以根据具体的需求选择合适的方法实现行转列。

站心网
在 SQL 中,行转列是指将数据表中具有相同 key 值的多行 value 数据,转换为使用一个 key 值的多列数据,使..
为您推荐
SQL语句中的EXISTS用法示例
程序笔记
2024年12月26日
EXISTS 是 SQL 中用于判断子查询是否返回结果的关键字。它通常用于 WHERE 子句中,结合子查询一起使用。如果子查询返回至少一行数据,EXISTS 会返回 TRUE,否则返回 FALSE。EXISTS 用法示例假设有两个表:employees..
数据类型1.整数: int和bigint bigint等效Java中的long2.浮点数:double(m,d) m总长度 d小数长度 eg:double(5,3) 26.789decimal是一个超高精度的浮点数,精度远高于double,只有涉及到超高精度运算时才会使用到3.字..

Visual Studio vs2022性能分析工具性能探查器使用方法
程序笔记
2024年09月03日
Visual Studio 2022 提供了多种性能分析工具,可用于分析和优化代码性能。下面是一些常见的性能分析工具及其使用方法:CPU 使用率该工具可用于监测 CPU 使用情况,并可在 Visual Studio 中查看每个函数和代码段的 CP..

HTML5实现刮刮卡的效果
程序笔记
2024年09月03日
HTML5实现类似刮刮卡的功能 上面是最终实现刮刮卡效果 注意要点设置: 1.设置用户缩放:user-scalable=no|yes [java] view plaincopyprint? <meta name="viewport" content="width=device-width, initial-scale=1, m..
linux中USB设备的绑定和解绑(类似于Windows中disable和enable)
程序笔记
2024年09月02日
前言在Linux中要通过命令实现USB设备的enable和disable,类似于在Windows设备管理器中禁用再启动设备一样,在某些场景,如调试USB固件时,重新加载了固件时,又不希望物理上插拔设备时,可以采用绑定和解绑这种方式..
JS粒子特效jQuery插件particleground
程序笔记
2024年09月02日
Particleground 粒子系统是一个jQuery插件,相当时髦富有科技感的背景。很多区块链公司网站都使用该特效。Particleground包括一个可选的视差效应控制鼠标在桌面设备和移动设备上的陀螺仪。它适用于任何浏览器支持HTM..

Vue安装和创建Vue项目
程序笔记
2024年09月02日
1、安装Node.js下载地址:https://nodejs.org/en/download/2、执行npm install --global vue-cli 命令,全局安装vue-cli3、执行vue init webpack vue-project 命令其中vue-project 是自己的项目名称如下图所示,执行..
把testing-library从13.5.0更新到了14.1.1,发现原来paste的case过不了。官网上V13的用法和Demo是这样的:paste(element, text, eventInit, options)test('shouldpastetextininput',()=>{render(<MyInput/>)..
ios safari浏览器button有2px的margin
程序笔记
2024年09月01日
最近以项目发现一个问题,两个按钮的表现形式在iphone的safari浏览器里和安卓和desktop不一样,连上Mac调试发现button元素有2px的margin,所以导致总宽度超过容器被换行了。试了两个iphone测试机,safari13和16都有..
position:sticky纯css实现粘性定位让元素滚到顶部固定
程序笔记
2024年09月01日
想要让某些元素(例如导航,概要)滚动到顶部后就悬停在顶部固定,可以通过postion:sticky纯css简单实现,而不用使用js使得代码很复杂。关于postion: stickyMSDN关于sticky的描述是这样的:元素按照文档的正常流定位..
javascript || 逻辑或 非布尔值用法
程序笔记
2024年09月01日
Logical OR (||) 概念当且仅当其一个或多个操作数为真时,一组操作数的逻辑或 (||) 运算符(逻辑析取)为真。 它通常与布尔(逻辑)值一起使用。 如果是,它返回一个布尔值。 然而,|| 运算符实际上返回指定操作数之..

@testing-library userEvent和fireEvent的区别
程序笔记
2024年09月01日
写react项目UT的时候@testing-library userEvent和fireEvent都能实现触发事件的功能,那么它们的区别是什么?fireEvent官方建议大多数项目都有一些 fireEvent 的用例,但大多数时候你应该使用@testing-library/user-..
npm ci和npm install的区别
程序笔记
2024年09月01日
关于npm cinpm ci命令和npm install类似,但是它更适用于自动化环境,比如测试平台、持续集成和部署——或者任何需要确保对依赖项进行全新安装的情况。npm ci和npm install的主要区别使用npm ci时,项目必须具有一个..
javascript使用正则RegExp匹配到的值replace替换
程序笔记
2024年09月01日
有这么一个需求,有一个文档列表,我通过输入关键字筛选出查找的文档。constregex=newRegExp(value,"gi");letnewList=articles.filter((x)=>{returnx.title.match(regex);});接着我希望将匹配的关键字通过样式设置问..

关于查询查询是测试库提供的在页面上查找元素的方法。 有几种类型的查询(“get”、“find”、“query”); 它们之间的区别在于,如果没有找到元素,查询是否会抛出错误,或者它是否会返回一个 Promise 并重试。 根..
Windows 下 exe 服务注册到 service 服务中
程序笔记
2024年08月31日
1添加服务sc create "Service name" binpath="D:\vv_test.exe" start=autovv_test.exe install2删除服务sc delete "Service name"3开启服务sc start "Service name"注册服务命令:sc create ServiceName binPath= 程..

GitHub Copilot 已沦为编程考试作弊的神器,正在“摧毁”初级开发者?
程序笔记
2024年08月31日
自 2021 年 6 月,微软发布 AI 代码建议工具 GitHub Copilot 以来,业界关于它的争议就没有断过。这不,继 Copilot 相继宣布收费、代码版权引发软件自由保护协会怒批之后,来自美国马萨诸塞大学阿默斯特分校计算机科..
Linux下执行的Shell脚本如何判断当前脚本执行是否有root权限
程序笔记
2024年08月31日
我们写Linux下执行的shell脚本,有时候我们需要在root权限下执行,如果当前没有root权限,则给出提示,并直接退出。可以使用如下代码实现:if [ $(id -u) != 0 ]; then echo You must run this script as root 12 ex..
如何判断file input的文件来自存储还是相机?
程序笔记
2024年08月31日
在前端中,可以使用 JavaScript 来判断 file input 的文件是来自存储还是相机。可以通过判断文件的元数据信息以及文件的 lastModified 属性值来判断文件的来源。以下是一个示例代码,演示如何使用 JavaScript 判断 f..

URL.createObjectURL上传图片生成blob预览链接
程序笔记
2024年08月31日
上传图片时,一般先让用户预览图片。现在通过URL.createObjectURL方法可以非常简单地获取一个blob的预览图片url。而不需要把文件转为base64或者其他的方法。它在各个主流浏览器也都兼容。下面用简单的例子实现一个上..