Sql语句行转列
2024-07-04
59
在 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。
在实际开发中,可以根据具体的需求选择合适的方法实现行转列。
更新于:4个月前赞一波!
相关文章
- SQL Server EF使用Sequence全局自增ID
- SQL Server用UUID做主键性能问题和解决方案
- 针对 Go 语言开发的 SQL 驱动模拟库
- 数据库SQL Server2014和SQL Server2019的区别和如何选择?
- 现在开发使用Sql语句还是ORM更多?
- Symfony/Doctrine中的SQL注入
- SQL生成框架Vanna.ai用法教程
- .NET自然语言转换为SQL的Nl2Sql项目
- 解决PHP开发中的SQL注入攻击问题
- SQL语句优化
- Sql Server清空表并重置主键序号
- sql创建并循环临时表
- 程序员Sql常见面试题和答案
- SQLServer 锁表查询命令
- SQLServer nolock查询防止锁表
- SqlServer分页查询示例
- SQL DATEDIFF用法和性能
- 提高SQL性能的最佳实践
- SQL inner join、left join和right join的区别
- SQLServer分页查询语句
文章评论
评论问答